23种设计模式(必考点)

设计模式概述

基本概念

领会设计模式几个要点:

  • 面向接口(interface)设计;
  • 重复合(部分-整体)轻继承;
  • 隔离变化:发现变化部分,把它独立出去。

    设计模式分类

  • 创建型模式
  • 结构型模式
  • 行为型模式

创建型模式

20201121181120-2020-11-21-18-11-20

  • 工厂方法模式(细分)
    工厂方法模式:
    多工厂方法模式:
    静态工厂模式
  • 抽象工厂模式
  • 单例模式
  • 创造者模式
  • 原型模式

工厂方法模式(Factory)

定义一个接口用于创建对象,但是让子类决定初始化哪个类。

工厂方法把一个类的初始化下方到子类。

  • 工厂方法模式:
  • 多工厂方法模式:
  • 静态工厂模式

抽象工厂模式(Abstract Factory)
为一个产品族提供了统一的创建接口,当需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个具体对象。
单例模式(Singleton)
确保一个类只有一个实例,并提供对该实例的全局访问
建造者模式(Builder)
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。
原型模式(Prototype)
用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

结构型模式

20201121182343-2020-11-21-18-23-43
适配器模式(Adapter )
将某个类接口转换成客户端期望的另一个接口表示,适配器模式可以消除由于接口不匹配造成的类兼容性问题。
桥接模式(Bridge )
讲一个抽象与实现解耦,以便两者可以独立变化。
组合模式(Composite)
把多个对象组成树状结构来表示整体和局部,这样用户可以用同样的方式对待单个对象和对象的组合
装饰器模式(Decorator)
向某个对象动态的添加更多的功能,装饰器模式是除类继承外的另一种扩展功能的方法。
外观模式(Facade)
为系统中的一组接口提供一个一致的界面(接口),外观模式定义一个高层接口,这一接口使得这一子系统更加容易使用。
享元模式(Flyweight )
通过共享以便有效地支持大量小粒度对象。
代理模式(Proxy )
为其它对象提供一个代理以控制对这个对象的访问。

行为型模式

20201121182638-2020-11-21-18-26-38
责任链模式(Chain of Responsibility )
为解除请求发送者和接收者之间的耦合,而使多个对象都有机会处理这个请求,需要将这些对象连成一条链,并沿这条链传递该请求,直到有一个对象处理它。
命令模式(Command)
讲一个请求封装成一个对象,从而使用户可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可取消的操作。
迭代子模式( Iterator)
提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。
解释器模式( Interpreter )
给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
中介者模式(Mediator)
包装一些列对象相互作用的方式,使得这些对象不必相互明显作用,从而使它们之间呈松散耦合。
备忘录模式(Memento)
备忘录对象是一个用来存储另外一个对象内部状态的快照的对象,以便在适当的时候把这个对象还原到存储时的状态。
观察者模式(Observer )
在对象间定义一个一对多的联系,当一个对象改变了状态时,所有其它相关对象会被通知并自动刷新。
状态模式(State)
让一个对象在其内部状态改变时,其行为也随之改变。状态模式需要对每一个系统可能的状态创建一个状态类的子类,当系统状态变化时,系统便改变所选的子类。
策略模式(Strategy )
定义一个算法系列,将其各自封装,并使它们之间有交互性,使得在用户使用时能够独立改变。
模板方法模式(Template Method)
准备一个抽象类,将部分逻辑以具体方法及具体构造子类的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。
访问者模式(Visitor)
把数据结构和作用到数据结构上的操作解耦,使得操作集合可以相对自由的演化。。

喜欢的话,给博主赏一杯冰阔乐吧


  转载请注明: Maserhe 23种设计模式(必考点)

 上一篇
剑指 Offer 46. 把数字翻译成字符串 剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串题目传送门 解题思路(简单动态规划)动态规划方程。先数字转化成字符串s = 12325664866处理令s[i - 2]和s[i - 1]所组成的数字为 t当t小于10或者大于25时只有一种情况。
2020-11-26
下一篇 
剑指 Offer 38. 字符串的排列 剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列题目原题传送门 题解解题思路dfs 正常搜索就行了。排序的话例如。用数字模拟代表字符。排序后结果为。1 2 2 2 3当我没有选择 第一 2 数字时,第二 次出现 2 我也不能进行选择。不然的话。情况一
2020-11-19
  目录