设计模式之组合模式
最新在工作之余,看了看这个设计模式,关于设计模式有很多种。最最常见的就是这个MVC模式或者工厂方法模式单例模式等,在做项目的过程中能灵活的掌握各种设计模式,也就是我们的架构设计越清晰,以后的项目也易于管理。
设计模式大概分为二十几种,原型模式 、 工厂方法模式、 生成器模式、 单例模式、 适配器模式、 桥接模式、 外观模式、 中介者模式、 观察者模式 、组合模式 、迭代器模式、 访问者模式、 装饰模式 、责任链模式 、模板方法模式、 策略模式 、命令模式、 享员模式、 代理模式、 备忘录模式。
在一个应用程序中,我们可以把相似的业务逻辑用一个设计模式当中的某一个来设计,当然一个应用程序中是由多个设计模式组合而成,有的设计模式是环环相扣的,有的是单一的。下面就说下组合设计模式的理解及使用场景
基本理解
1.整体和部分可以一直对待。
组合模式:将对象组合成树形结构以表示“部分--整体”的层次结构。组合模式使得用户对单个对象和组合独享的使用具有一致性。
2.透明方式和安全方式
透明方式:在Component(为组合中的对象声明接口)中声明所有用来管理子对象的方法 。这样实现该接口的子类都具有了该接口中的方法。这样的好处就是叶节点和枝节点对于外界没有区别,他们具有完全一致的行为接口。但问题也很明显,因为Leaf类本身不具备添加删除方法的功能,所以实现它是没有意义的。
安全模式:在Component接口中不去声明Add和Remove方法,那么子类的Leaf也就不需要去实现它,而是在Composite声明所有用来管理子类对象的方法,这样做就不会出现刚才提到的问题,不过由于不够透明,所以树叶和树枝类将不具有相同的接口,客户端调用需要做相应的判断,带来了不便。
何时使用组合模式
当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以护绿组合对象昂与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。
自定义控件时,就是把一些基本的控件组合起来,通过编程写成一个定制的控件。这就是典型的组合模式应用。
组合模式的好处
1.组合模式定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这些组合对象又可以被组合,这样不断地递归下去,客户端代码中,任何用的的基本对象的地方都可以使用组合对象了。
2.组合模式让客户可以一致地使用组合结构和单个对象。
何时使用组合模式
1.想获得对象抽象的树形表示(整体部分的层次结构)。
2.想让客户端统一处理组合结构中的所有对象。
在Cocoa Touch框架中使用组合模式
在Cocoa Touch框架中,UIView被组织成一个组合结构。 每个UIView的实例可以包含UIView的其他实例,形成统一的树形结构。让客户端对单个UIView对象和UIView的组合统一对待。
结束语:这是第一次写简书,也是刚刚看这个设计模式,如果哪里理解的不好,或者有需要补充的,还请大家见谅,积极指出不足之处,共同成长🙂。
网友评论