常用设计模式

设计模式分三种:创建型、结构型、行为型

1、简单工厂模式、工厂模式、抽象工厂模式

简单工厂:工厂-》产品
工厂:抽象工厂-》工厂1-》产品1
-》工厂2-》产品2
抽象工厂:抽象工厂-》工厂1-》抽象产品-》产品1/产品2

2、建造者模式

创建型模式
结构:
抽象建造者:abstract class ActorBuilder
具体建造者:HeroBuilder extends ActorBuilder、DevilBuilder
产品:Actor游戏角色类,充当产品
指挥者:ActorController 角色控制器,在这里调用具体建造者的方法。

优点:每个建造者相对独立,方便添加/替换,且调用者不必直到产品内部组成的细节,将产品本身和产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象

缺点:如果产品的内部变化复杂,可能需要定义很多具体的建造者来实现这种变化,会导致系统变得很庞大
建造者模式的产品需要有较多共同点,组成部分相似,使用范围受到限制

3、单例模式

创建型模式
确保一个类只有一个实例,供全局访问

饿汉式、懒汉式(双重检查锁,synchronized+volatile

优点:节约系统资源、
缺点:不可扩展

4、适配器模式

5、代理模式

6、责任链模式

行为型模式
结构:
Handler抽象处理者
concreteHandler 具体处理者

上家会在自己的代码里维持对下家的引用

优点:在系统中增加一个新的具体处理者无需修改原有系统的代码,只需要修改链条即可,符合开闭原则

缺点:如果建链不当,可能出现循环调用,

7、观察者模式

对象和对象之间的依赖关系,一个对象发生改变时,自动通知其他对象
也可以叫发布-订阅者模式
Event、Listener、Publisher

优点:
可以解耦,简化一对多的难度
缺点:
如果观察者很多,一个个通知可能很浪费时间,

8、策略模式

通过继承和多态,
让每个算法之间可以互相替换,
Context环境类
Strategy抽象策略类
ConcreteStrategy:具体策略类

优点:
避免多重if-else
可以灵活地增加新的策略/算法

缺点:
调用者必须直到所有的策略类,并自行决定使用哪个策略

9、模板方法模式

定义一个操作中算法的框架,将一些步骤的实现放到子类中。

优点:代码复用
反向控制,可以通过子类覆盖父类的钩子方法来决定是否执行某一步骤
更新/增加新的子类很方便

其他:桥接模式、组合模式、装饰模式、外观模式、享元模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、状态模式、访问者模式

相关推荐

  1. 设计模式

    2024-05-12 05:46:04       39 阅读
  2. 设计模式

    2024-05-12 05:46:04       35 阅读
  3. 设计模式

    2024-05-12 05:46:04       17 阅读
  4. 设计模式

    2024-05-12 05:46:04       17 阅读
  5. 设计模式

    2024-05-12 05:46:04       9 阅读
  6. 设计模式

    2024-05-12 05:46:04       10 阅读
  7. 设计模式

    2024-05-12 05:46:04       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 05:46:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 05:46:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 05:46:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 05:46:04       20 阅读

热门阅读

  1. html的基础知识和常见的语法简单归纳

    2024-05-12 05:46:04       9 阅读
  2. 【代码】Mysql 查询近一个月各类型设备新增数量

    2024-05-12 05:46:04       11 阅读
  3. CMake 学习笔记(访问Python)

    2024-05-12 05:46:04       11 阅读
  4. 数据结构之栈

    2024-05-12 05:46:04       10 阅读
  5. go方法定义

    2024-05-12 05:46:04       14 阅读
  6. L2网络和L3网络(L2VPN和L3VPN)

    2024-05-12 05:46:04       10 阅读