设计模式---合成模式
合成模式其实就是把骡子和马同样看待!
上图中可以看出,我们可以吧骡子和马看做都是动物。
合成模式可以不提供父对象的管理方法,但是合成模式必须在合适的地方提供子对象的管理方法
合成模式的实现根据所实现接口的区别分为两种形式,分别称为安全式和透明式。
安全模式:当然就是一开始就告诉别人了,我不具备这个功能,完全就给你机会进行xxoo;
透明模式:就是你要进行xxoo时候,我让你一个异常的惊喜,就是没小gg
● 抽象构件(Component)角色:这是一个抽象角色,它给参加组合的对象定义出公共的接口及其默认行为,可以用来管理所有的子对象。合成对象通常把它所包含的子对象当做类型为Component的对象。在安全式的合成模式里,构件角色并不定义出管理子对象的方法,这一定义由树枝构件对象给出。
● 骡子构件(LuoZi)角色:骡子对象是没有下级子对象的对象,
● 马构件(Ma)角色:代表参加组合的有下级子对象的对象。树枝构件类给出所有的管理子对象的方法,如add();
客户端调用内部方法时候,是骡子里面是不存在add()这个方法的,从根本上解决了客户端错误调用;就不会有发生误操作的可能,能访问的方法都是被支持的。
透明模式:
透明性合成模式是指:从客户端使用合成模式上,是否需要区分到底是“骡子对象”还是“马对象”。如果是透明的,那就不用区分,对于客户而言,都是Compoent对象,具体的类型对于客户端而言是透明的,是无须关心的。
梦想一定要有,万一实现了!