简体中文 | 繁体中文

大话设计模式-----第38章


护花修仙狂徒 极品鬼师 漂亮女主播 终极韩娱 万界小人物互助群 哦,我的王子ⅱ 灰姑娘的邪魅黑道王子 皇室小宠儿 萌妻难养:闪婚老公太霸道 重生小地 九州双尊 帝尊天下 出蜀 只手遮仙 将军很慌张 惊艳一枪 花开花谢只为与你相遇 网游之幻想骑士 唐太宗政变24小时 金球之路
第38章

大B:“说说组合模式的优点吧!”

小A:“组合模式定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断地递归下去,客户代码中,任何用到基本对象的地方都可以使用组合对象了。用户不用关心到底是处理一个叶节点还是处理一个组合组件,也就是用不着为定义组合而写一些选择判断语句了,简单地说就是组合模式让客户可以一致地使用组合结构和单个对象。”

大B:“嗯,你知不知道什么是透明方式?什么是安全方式?及他们的好处。”

小A:“透明方式也就是说在Component中声明所有用来管理子对象的方法中,其中包括Add、Remove等。这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶节点和枝节点对于外界没有区别,它们具备完全一致的行为接口。但问题也很明显,因为Leaf类本身不具备Add()、Remove()方法的功能,所以实现它是没有意义的。安全方式也就是在Component接口中不去声明Add和Remove方法,那么子类的Leaf也不需要去实现它,而是在Composite声明所有用来管理子类对象的方法。不过由于不透明,所以树叶和树枝将不具有相同的接口,客户端的调用需要做相应的判断,带来了不便。”

推荐小说