三大设计模式类型——结构型设计模式

二、结构型设计模式

代理模式、适配者模式、桥接模式、门面模式常用,组合模式少用

1)代理模式(Proxy)

定义:为另一个对象提供一个替身和占位符,以控制对这个对象的访问。被代理对象可以是远程的对象、创建开销大的对象或需要安全控制的对象


Ps:静态代理需要我们手动创建代理对象,而动态代理则将代理对象的创建交给上层(比如jdk动态代理)

2)适配器模式(Adapter)

定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间


Ps:两个模块进行对接,但是两个模块都不适合在原有的基础上改变时通常可以使用适配器模式

3)桥接模式(Bridge)

定义:将抽象部分和实现部分,分离解耦,使得两者可以独立地变化。


Ps:抽象部分用于使用,实现部分用于丰富家族,分离后可以进行独立扩展互相不影响

4)装饰者模式(Decorator)

定义:动态的将责任附加在对象上。若要扩展功能,装饰者模式提供了比继承更弹性的替代方式


装饰者模式-1
装饰者模式-2

Ps:接口定义规范,抽象类在定义抽象方法的同时,还可以抽取出子类通用的实现。根据实际使用场景去选择创建接口或抽象类

5)门面模式(Facede)

定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用


Ps:符合迪米特法则

6)享元/蝇量模式(Flyweight)

定义:使用共享对象可以有效的支持大量细粒度的对象


Ps:享元理解为共享的元数据,蝇量理解为粒度小但量级很大。享元模式是池技术的重要实现方式

7)组合模式(Composite)

定义:允许你将对象的组合拼装成树结构来表现“整体/部分”层次结构。组合模式能让用户以一致性的方式操作个别对象或对象集合


Ps:和其他模式比较起来使用不多

你可能感兴趣的:(三大设计模式类型——结构型设计模式)