合成模式
组合建模时注意
1.组对象包含单对象也包含其他的组对象
2.要为组合对象和单对象定义共同的行为
合成模式的意图:
为保证客户端调用单对象与组合对象的一致性。
合成模式是对象的结构模式,在以后的项目中,如果遇到对象组合的情况(即也符合树结构的),可以考虑下此模式。
此模式中讲述了安全方式和透明方式:
- 安全方式:抽象构件上只提供树叶和树枝公共的方法,没提供树枝独有的管理等方法(add(),remove())。这样的好处是安全,用户不会在树叶上使用add()等管理方法,缺点是不够透明,用户必须知识当前对象为树叶还是树枝(向下转型)。
- 透明方式:抽象构件上提供了满足树枝的所有方法(包括add(),remove()),这样做的好处是,用户可以任意执行对象的add()和remove()管理对象。缺点是如果用户在树叶上执行管理方式(add(),remove())时,在编译期不会有错,但在执行期会报错,这样不容易被发觉错误出在哪.