我几乎没有设计问题:我有一个工厂将创建一种或另一种类型的对象。但是我的客户要求是将来自外部世界的数据(通过 setter 方法)提供(提供)给类型 1 的具体类,而不是类型 2。
如果我将这些 setter 方法放在接口中,则需要在两个具体类中强制实现这些方法。这不是我的要求。我想为第一种类型(一些设置器)提供一种数据,并想为其他类型提供另一种数据(可能与先前类型包含的设置器不同。)
例如
class ISubjectExecutor
{
public:
virtual void ISUBJECTEXECUTOR_EXPORTS_API Execute()=0;
};
class COMExecutor: public ISubjectExecutor
{
public:
virtual void Execute()=0;
void setCLSID();
void setGuids();
};
class Win32Executor : public IWin32Executor
{
public:
virtual void Execute()=0;
void setFilePath();
};
现在在这里我不能使用 ISubjectExecutor (*pSubjectExecutor) 的指针在从工厂接收指针 (ISubjectExecutor) 后的任何时候调用我选择的 Win32Executor 或 COMExecutor 的 setter 方法。因为这些所有的 setter 永远不会存在于 ISubjectExecutor 接口中,并且您无法访问任何从未包含在接口中并且存在于具体实现中的方法。
如何解决这个设计问题来解决。?
问候哈桑