type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
📝 软考专项:上午题 #8 设计模式
软考专项:上午题 #8 设计模式
创建型设计模式:5种 与对象的创建有关
结构型设计模式:7种 处理类或对象的组合
行为设计模式:11种 对类或对象怎么交互和怎么样分配职责进行描述

一、设计模式分类
创建型设计模式
- 类
- 工厂方法模式(Factory Method)
- 对象
- 抽象工厂模式(Abstract Factory)
- 生成器模式(Builder)
- 原型模式(Prototype)
- 单例模式(Singleton)
结构型设计模式
- 类
- 适配器模式(Adapter)
- 对象
- 适配器模式(Adapter)
- 桥接模式(Bridge)
- 组合模式(Composite)
- 装饰模式(Decorator)
- 外观模式(Facade)
- 享元模式(Flyweight)
- 代理模式(Proxy)
行为型设计模式
- 类模式
- 解释器模式(Interpreter)
- 模板方法模式(Template Method)
- 对象模式
- 责任链模式(Chain of Responsibility)
- 命令模式(Command)
- 迭代器模式(Iterator)
- 终结者模式(Mediator)
- 备忘录模式(Memento)
- 观察者模式(Observer)
- 状态模式(State)
- 策略模式(Strategy)
- 访问者模式(Visitor)
二、创建型设计模式 5种
抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
简单工厂模式(不属于23种设计模式之一)
- 简单工厂模式属于创建型模式,但不属于23种设计模式之一。
- 定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类
- 在简单工厂模式中用于被创建实例的方法通常称为静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)
- 需要什么产品就传入产品对应的参数,就可以获取所需要的产品对象,而无需知道其实现过程
- 例如,有一家饺子店,当客户需要某种饺子时,饺子店生成对应的饺子给客户。这里就可以把饺子店看成工厂(Factory),饺子看成产品(Product),饺子的名称可以看成参数,饺子店根据不同的参数返回不同的饺子。
- 三类角色
- 工厂(核心)
- 负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需对象
- 抽象产品
- 工厂类所创建的所以对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象
- 具体产品
- 简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例。他需要实现抽象产品中声明的抽象方法。
- 缺陷
- 不属于23种设计模式之一
- 新增产品要更改工厂(核心)方法,不符合面向对象变成的开放-封闭原则(对扩展开放,对修改关闭,例子:修水管结果漏水更多)
工厂方法模式(Factory Method,创建型类设计模式)
意图
- 定义一个用于创建对象的接口,让子类觉得实例化哪个类。Factory Method使一个类的实例化延迟到其子类
下面这张图左边是简单工厂模式,右边是工厂模式(类创建型设计模式)
抽象工厂模式(Abstract Factory,创建型对象设计模式)
意图
- 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
生成器模式(Builder,创建型对象设计模式)
意图
- 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
原型模式(Prototype,创建型对象设计模式)
意图
- 用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
单例模式(Singleton,创建型对象设计模式)
意图
- 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
三、结构型设计模式 7种
结构型设计模式涉及如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果这个类就包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。
适配器模式(Adapter,结构型类/对象设计模式)
意图
- 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(USB —转接(适配器)—》Type-C)
桥接模式(Bridge,结构型对象设计模式)
意图
- 将抽象部分与其实现部分分离,使他们都可以独立地变化。解耦合
组合模式(Composite,结构型对象设计模式)
意图
- 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
- 组合的对象:文件、文件夹
装饰模式(Decorator,结构型对象模式)
意图
- 动态的给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更加灵活
外观模式(Facade,结构型对象模式)
意图
- 为子系统的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
享元模式(Flyweight,结构型对象模式)
意图
- 运用共享技术有效地支持大量细粒度(对业务中的对象细分,得到更加科学合理的对象)的对象
代理模式(Proxy,结构型对象模式)
意图
- 为其他对象提供一种代理以控制对这个对象的访问。
四、行为型设计模式 11种
责任链模式(Chain of Responsibility,行为型对象模式)
意图
- 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。
命令模式(Command,行为型对象模式)
意图
- 将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作
解释器模式(Interpreter,行为型类模式)
意图
- 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子
观察者模式(Observer,行为型对象模式)
意图
- 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
状态模式(State,行为型对象模式)
意图
- 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
策略模式(Strategy ,行为型对象模式)
意图
- 定义一系列的算法,把它们一个个封装起来,并且使他们可以相互转换。这次模式是的算法可以独立于使用它们的客户而变化
模板方法(Template Method,行为型类模式)
意图
- 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特点步骤。
访问者模式(Visitor,行为型对象模式)
意图
- 表示一个作用于某对象结构的各元素的操作。它允许在不改变各元素的前提下定义作用于这些元素的新操作。
- 作者:poze624
- 链接:https://poze624.top/%E8%BD%AF%E8%80%83%E4%B8%93%E9%A1%B9/20240611153122
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。