【学习难度:★★★★☆,使用频率:★☆☆☆☆】
首先解释一下享元的概念:在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象,这个共享的对象即为享元。
【学习难度:★★★☆☆,使用频率:★★★★☆】
代理模式给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用
【学习难度:★★★☆☆,使用频率:★★★★☆】
我们对于这个图片肯定会非常熟悉,这是mac系统的文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。我们可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一致的对待容器对象和叶子对象。这就是组合模式的设计动机:组合模式定义了如何将容器对象和叶子对象进行递归组合,使得客户在使用的过程中无须进行区分,可以对他们进行一致的处理。
【学习难度:★☆☆☆☆,使用频率:★★★★★】
外观(门面)模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。
【学习难度:★★★☆☆,使用频率:★★★☆☆】
桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。
【学习难度:★★☆☆☆,使用频率:★★★★☆】
适配器模式将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。