设计模式-26.总结

gof设计模式共23种:分为3类

创建型:1、工厂方法模式2、抽象工厂模式3、单例模式4、建造者模式5、原型模式

其中单例和原型模式很好理解,也很常用,主要是单例的6种实现方法要清楚,且各针对哪些场景:饿汉式适合大部分场景,但没有懒加载,如果明确要求懒加载考虑内部类或双检锁方式,如涉及反序列化使用枚举方式,单线程下使用线程不安全的懒汉式,线程安全的懒汉式性能太低,不推荐使用。

工厂系列:先说简单工厂(静态工厂),不符合开闭原则,不属于GoF23种设计模式,如果产品数量固定,不需要增加可以选择该模式,实现简单。然后工厂方法和抽象工厂都是为了解决接口选择的问题,但是工厂方法是针对一种产品,而抽象工厂是针对一系列相互依赖或相关产品的创建。其中简单工厂可以利用反射消除switch分支,各工厂模式配合使用可能会有很好的效果。

建造者模式用于要构建复杂对象时,如果一个对象需要很多组件才能使用,且组件会经常发生变化,但是组成部分必须相同,外界使用时又不想知道具体构建过程,就可以使用该模式。

创建型模式都比较常用

结构型:1、适配器模式2、装饰器模式3、代理模式4、外观模式5、桥接模式6、组合模式7、享元模式

适配器模式应用于想要用既有接口,但是接口不符合当前要求的场景。

装饰器是给已有接口添加额外功能。

代理模式应用于对一个代理对象访问的控制场景。

外观模式将各个子系统的调用封装,对外提供一个简化的统一接口。

桥接模式用于一个类有多种角度的变化,利用聚合代替继承使抽象和实现分类。

组合模式适用于具有整体-部分的场景,为组合对象和单个对象提供一致的接口

享元模式用于系统需要大量类似的对象,但是要分离好内部和外部状态,内部变化要小,外部变化大

其中常用的有适配器模式、装饰器模式、代理模式、组合模式

行为型:1、策略模式2、命令模式3、状态模式4、观察者模式5、访问者模式6、中介者模式7、迭代器模式8、解释器模式9、模板方法模式10、责任链模式11、备忘录模式

策略模式为了封装一系列的算法并使它们可以相互替换。

命令模式在需要对命令进行记录、撤销或重做、事务等处理时可以考虑使用。(任何认为是命令的场景都可以用,但是如果没有上面几种需求,就多余了)。

状态模式适应于对象行为随状态改变的场景。

观察者模式:一个对象变化要通知其他一些对象的时候使用。

访问者模式:需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。(简单来说就是一个类要增加一堆跟自己没啥关系的方法,就可以这些方法提出来假装成要访问这个类的另一个对象,也就是访问者,其实就是抽象的过程实现解耦)

中介者模式用于一系列对象之间需要通信,但是又不想直接通信的场景

迭代器模式提供一个集合的遍历的统一接口,几乎用不到,因为jdk已经有了

解释器模式提供一个解释特定语句的接口。用的不多

模板方法模式提供一个算法执行的骨架,主要为了封装不变的部分,扩展可变部分。做什么事有一定稳定步骤但是具体每个步骤的实现可能不同的场景。

责任链模式,一个请求需要一系列对象去处理,或者直到找到人去处理的场景。

备忘录模式,应用于一个对象状态需要恢复的场景

常用的有:策略模式、命令模式、观察者模式、模板方法模式、备忘录模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值