当前位置: 首页 > article >正文

23种设计模式详细知识点(软件设计师)

设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

1.创建型设计模式: ①抽象工厂(Abstract Factory)、②生成器(Builder)、③工厂方法(Factory Method)、④原型(Prototype)、⑤单例(Singleton)
2.结构型设计模式: ①适配器(Adapter)、②桥接(Bridge)、③组合(Composite)、④装饰(Decorator)、⑤外观(Facade)、⑥享元(Flyweight)、⑦代理(Proxy)
3.行为设计模式: ①责任链(Chain of Responsibility)、②命令(Command)、③解释器(Interpreter)、④迭代器(Iterator)、⑤中介者(Mediator)、⑥备忘录(Memento)、⑦观察者(Observer)、⑧状态(State)、⑨策略(Strategy)、⑩模板方法(Template Method)、⑪访问者(Visitor)

设计模式

  • 设计模式
  • A.创建型设计模式(5种)
    • 1.抽象工厂(Abstract Factory)
    • 2.生成器(Builder)
    • 3.工厂方法(Factory Method)
    • 4.原型(Prototype)
    • 5.单例(Singleton)
  • B.结构型设计模式(7种)
    • 1.适配器(Adapter)
    • 2.桥接(Bridge)
    • 3.组合(Composite)
    • 4.装饰器(Decorator)
    • 5.外观(Facade)
    • 6.享元(Flyweight)
    • 7.代理(Proxy)
  • C.行为设计模式(11种)
    • 1.责任链(Chain of Responsibility)
    • 2.命令(Command
    • 3.解释器(Interpreter)
    • 4.迭代器(Iterator)
    • 5.中介者(Mediator)
    • 6.备忘录(Memento)
    • 7.观察者(Observer)
    • 8.状态(State)
    • 9.策略(Strategy)
    • 10.模板方法(Template Method)
    • 11.访问者(Visitor)

A.创建型设计模式(5种)

处理创建对象

1.抽象工厂(Abstract Factory)

2.生成器(Builder)

3.工厂方法(Factory Method)

定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到其子类。

适用于:当一个类不知道它所必须创建的对象的类的时候;当一个类希望由它的子类来指定它所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候。

4.原型(Prototype)

5.单例(Singleton)

B.结构型设计模式(7种)

类和对象的组合

1.适配器(Adapter)

2.桥接(Bridge)

3.组合(Composite)

将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

适用于:想表示对象的部分-整体层次结构;希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

4.装饰器(Decorator)

描述了以透明围栏来支持修饰的类和对象的关系,动态地给一个对象添加一些额外的职责 ,从增加功能的角度来看,装饰器模式相比生成子类更加灵活。

适用于:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;处理那些可以撤销的职责;当不能采用生成子类的方式进行扩充时。

5.外观(Facade)

为子系统中的一组接口提供一个一致的界面,定义了一个高层接口, 这个接口使得这一子系统更加容易使用。

适用于:要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂;客户程序与抽象类的实现部分之间存在着很大的依赖性;当需要构建一个层次结构的子系统时,使用Fapde模式定义子系统中每层的入口点。

6.享元(Flyweight)

运用共享技术有效地支持大量细粒度的对象。

一个应用程序使用了大量的对象;完全由于使用大量的对象,造成很大的存储开销;对象的大多数状态都可变为外部状态;如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象:应用程序不依赖于对象标识。

7.代理(Proxy)

C.行为设计模式(11种)

描述类或者对象的交互行为

1.责任链(Chain of Responsibility)

2.命令(Command

3.解释器(Interpreter)

4.迭代器(Iterator)

5.中介者(Mediator)

用一个 中介对象来封装一系列的对象交互。 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解;一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象;想定制一个分布在多个类中的行为,而又不想生成太多的子类。欲使一个后端数据模型能够被多个前端用户界面连接,

6.备忘录(Memento)

7.观察者(Observer)

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立的对象中以使它们可以各自独立地改变和复用;当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时;当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。

8.状态(State)

9.策略(Strategy)

10.模板方法(Template Method)

11.访问者(Visitor)


http://www.kler.cn/a/280449.html

相关文章:

  • 央行沟通与市场影响以日本央行与黄金市场为例
  • World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Strand of the Ancients
  • JavaScript 的进阶概念补充:V8 引擎的垃圾回收机制
  • Qt自定义控件详解
  • Android Audio音量——硬按键调节音量(七)
  • 【blender】一个汉堡包
  • Java-BatchProcessingUtil工具类
  • 数学建模学习(118):牛顿冷却定律的原理解析、案例分析与Python求解
  • 【Leetcode 2068 】 检查两个字符串是否几乎相等 —— 击败100%
  • SSRF漏洞实现
  • XSS LABS - Level 1 过关思路
  • 【代码随想录训练营第42期 Day38打卡 - 动态规划Part6 - LeetCode 322. 零钱兑换 279.完全平方数 139.单词拆分
  • 【硬核】开源的高性能轻量级ORM框架
  • nacos 动态读取nacos配置中心项目配置
  • 数据结构与算法(快速基础C++版)
  • 【2024】Datawhale AI夏令营-从零上手Mobile Agent-Task1笔记
  • SpringBoot + AOP 解决审计日志记录
  • MySQL中处理JSON数据
  • 【自动驾驶】控制算法(四)坐标变换与横向误差微分方程
  • html标签大合集一文入门