我在不同的文件中有 3 个类:
X
|
-------
| |
Y Z
我将创建几个继承类 Y 和 Z 的对象。
只有在 Y 类设置了某个标志变量时,才应执行 Z 类中的特定函数。
我应该在哪里创建这个标志变量(哪个类)以及声明应该是什么样的(静态/外部)?
我在不同的文件中有 3 个类:
X
|
-------
| |
Y Z
我将创建几个继承类 Y 和 Z 的对象。
只有在 Y 类设置了某个标志变量时,才应执行 Z 类中的特定函数。
我应该在哪里创建这个标志变量(哪个类)以及声明应该是什么样的(静态/外部)?
考虑模板方法作为臭名昭著的标志的替代品。
如果只有 Z 受其影响,则标志应该在 Z 中。但是整个事情都闻起来了——标志是由类而不是实例设置的。在可行的情况下使用多态性而不是标志。
我认为这是一个奇怪的设计;您将在继承的类之间创建依赖关系。
方法(和标志变量)应该在父类 X 中。
(编辑)完善/替换我上面写的,变量可以在基类中,Y类将设置变量(Setter),Z类将具有从基类“获取”值的方法.
最佳答案:Anton Gogolev 所说,使用模板。
(否则使用私有枚举变量。例如使用:返回 type.x/type.y 等的 GetType())
如果你有两个 Y 对象,而只有一个设置了标志怎么办?您的三个 Z 对象中的哪一个受到影响?这个问题表明你的设计有缺陷。