我在不同的文件中有3个类:
X
|
-------
| |
Y Z
我将创建几个继承类Y和Z的对象。
只有当Y类设置了一些 flag 变量时,才应执行Z类中的特定功能。
我应该在哪里创建这个标志变量(哪个类),声明应该是什么样的(静态/外部)?
答案 0 :(得分:6)
将template method视为臭名昭着的旗帜的替代品。
答案 1 :(得分:1)
标志应该在Z中,如果它只是由它影响的Z.但整个事情闻起来 - 标志是由类而不是实例设置的。在可行的情况下使用多态而不是标记。
答案 2 :(得分:1)
我认为这是一个奇怪的设计;您将在继承的类之间创建依赖关系。
方法(和标志变量)应该在父类X中。
(编辑) 改进/替换我上面写的, 变量可以在基类中,Y类将设置变量(Setter),Z类将具有从基类中“获取”值的方法。
答案 3 :(得分:0)
最佳答案:Anton Gogolev所说的,使用模板。
(否则使用私有枚举变量。例如:GetType()返回type.x / type.y等)
答案 4 :(得分:0)
如果您有两个Y对象,并且只有一个设置了标志,该怎么办?你的三个Z物体中哪一个受到影响?问题表明你的设计存在缺陷。