结构型模式
这些设计模式关注类和对象的组合。
•适配器模式 (Adapter Pattern):使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
•装饰器模式 (Decorator Pattern):保持接口,增强性能:修饰类继承被修饰对象的抽象父类,依赖被修饰对象的实例(被修饰对象依赖注入),以实现接口扩展
•桥接模式 (Bridge Pattern):两个维度独立变化,依赖方式实现抽象与实现分离:需要一个作为桥接的接口/抽象类,多个角度的实现类依赖注入到抽象类,使它们在抽象层建立一个关联关系
•外观模式 (Facade Pattern):在客户端和复杂系统之间再加一层,这一次将调用顺序、依赖关系等处理好。即封装底层实现,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的高层接口
•代理模式 (Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问:增加中间层(代理层),代理类与底层实现类实现共同接口,并创建底层实现类对象(底层实现类对象依赖注入代理类),以便向外界提供功能接口
•组合模式 (Composite Pattern):用户对单个对象和组合对象的使用具有一致性的统一接口
•享元模式 (Flyweight Pattern):享元工厂类控制;HashMap实现缓冲池重用现有的同类对象,如果未找到匹配的对象,则创建新对象
1. 适配器模式
分类:
类适合器
对象适配器
主要解决:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
应用程序中可能需要将两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。
2.装饰器模式
为了扩展一个类,经常使用继承方式实现。由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。在不想增加很多子类的情况下扩展类,动态地给一个类添加一些额外的功能时,可以使用装饰器模式。装饰器模式
特点:不改变原类文件、不使用继承、动态地扩展类功能。
3.桥接模式
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化
4.外观模式
外观模式可以隐藏系统的复杂性,并向客户端提供了一个可以访问系统的高层接口,为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用。
5.代理模式
分类:
静态代理
JDK动态代理
Cglib代理
有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层,为这个对象提供代理,以控制对该对象的访问。
6.组合模式
组合模式组合多个对象形成树形结构以表示“整体-部分”的结构层次。它定义了如何将容器对象和叶子对象进行递归组合,使得客户在使用的过程中无须进行区分,可以对他们进行一致的处理,客户程序可以向处理简单元素一样来处理复杂元素。
7.享元模式
分类:
单纯享元模式
复合享元模式
例子:围棋
享元模式主要目的就是让多个对象实现共享,减少不必要的内存消耗,将多对同一对象的访问集中起来,不必为每个访问者创建一个单独的对象
•内部状态:享元对象内部不随外界环境改变而改变的共享部分。
•外部状态:享元对象内部随环境的改变而改变,不能够共享的状态就是外部状态。
欢迎关注公众号:“架构一线”,定期分享一些实战心得,互联网前沿技术等.