zoukankan      html  css  js  c++  java
  • 设计模式>经典设计模式一览

    一、模式(Pattern)

    定义

    我们处理大量问题时,在很多不同的问题中重复出现的一种性质,它使得我们可以使用一种方法来描述问题实质并用本质上相同,但细节永不会重复的方法去解决,这种性质就叫模式。

    一个围棋下得好的人知道,好的“形”对于围棋非常重要。形是棋子在棋盘上的几何形状的抽象化。形就是模式(Pattern),也是人脑把握和认识外界的关键。

    成为模式的条件

    1、它可以解决问题。模式不能仅仅反映问题,而必须对问题提出解决方案。
    2、它所提出解决方案是正确的,而且不是很明显的。
    3、它必须是涉及软件系统深层的结构的东西,不能仅是对已有的模块的描述。
    4、它必须满足人的审美,简洁美观。

    二、模式分类

    2.1、创立性模式

    •创立性模式(CreationalPatterns)是类在实例化时使用的模式。

    •当一些系统在创立对象时,需要动态地决定怎样创立对象,创立哪些对象

    •创立性模式告诉我们怎样构造和包装这些动态的决定。

    2.2、结构性模式

    •结构性模式描述类和对象怎样结合在一起成为较大的结构。

    •结构性模式描述两种不同的东西:类与类的实例。

    2.3、行为模式

    •行为模式设计到算法和对象职责间的分配。

    •行为模式不仅是关于类和对象的,而且还描述它们之间的作用。

    •这些模式刻画了运行时刻难以跟踪的复杂的控制流,它帮助软件设计者在设计软件的时候把注意力从控制流转移到对象间的联系上。

    创立型

    结构型

    行为型

    工厂方法(Factory Method)

    适配器(Adapter)

    解释器(Interpreter)

    模板方法(Template Method)

    对象

    抽象工厂(Abstract Factory)

    生成器(Builder)

    原型(Prototype)

    单态(Singleton)

    桥接(Bridge)

    组成(Composite)

    装饰(Decorator)

    外观(Facade)

    享元(Flyweight)

    代理(Proxy)

    责任链(Chain of Responsibility)

    命令(Command)

    迭代器(Iterator)

    中介者(Mediator)

    备忘录(Memento)

    观察者(Observer)

    状态(State)

    策略(Strategy)

    访问者(Visitor)

     设计模式建议学习顺序

    学习顺序

    设计模式

    常用程度

    适用层次

    引入时机

    结构复杂度

    变化

    实现

    体现的原则

    1

    Factory Method

    很常用

    代码级

    编码时

    简单

    子类的实例化

    对象的创建工作延迟到子类

    开闭原则

    2

    Singleton

    很常用

    代码级、应用级

    设计时、编码时

    简单

    唯一实例

    封装对象产生的个数

    3

    Facade

    很常用

    应用级、构架级

    设计时、编码时

    简单

    子系统的高层接口

    封装子系统

    开闭原则

    4

    Template Method

    很常用

    代码级

    编码时、重构时

    简单

    算法子步骤的变化

    封装算法结构

    依赖倒置原则

    5

    Abstract Factory

    比较常用

    应用级

    设计时

    比较复杂

    产品家族的扩展

    封装产品族系列内容的创建

    开闭原则

    6

    Composite

    比较常用

    代码级

    编码时、重构时

    比较复杂

    复杂对象接口的统一

    统一复杂对象的接口

    里氏代换原则

    7

    Proxy

    比较常用

    应用级、构架级

    设计时、编码时

    简单

    对象访问的变化

    封装对象的访问过程

    里氏代换原则

    8

    Command

    比较常用

    应用级

    设计时、编码时

    比较简单

    请求的变化

    封装行为对对象

    开闭原则

    9

    Observer

    比较常用

    应用级、构架级

    设计时、编码时

    比较简单

    通讯对象的变化

    封装对象通知

    开闭原则

    10

    Strategy

    比较常用

    应用级

    设计时

    一般

    算法的变化

    封装算法

    里氏代换原

    11

    Builder

    一般

    代码级

    编码时

    一般

    对象组建的变化

    封装对象的组建过程

    开闭原则

    12

    Adapter

    一般

    代码级

    重构时

    一般

    对象接口的变化

    接口的转换

    13

    Bridge

    一般

    代码级

    设计时、编码时

    一般

    对象的多维度变化

    分离接口以及实现

    开闭原则

    14

    Decorator

    一般

    代码级

    重构时

    比较复杂

    对象的组合职责

    在稳定接口上扩展

    开闭原则

    15

    Iterator

    一般

    代码级、应用级

    编码时、重构时

    比较简单

    对象内部集合的变化

    封装对象内部集合的使用

    单一职责原则

    16

    Mediator

    一般

    应用级、构架级

    编码时、重构时

    一般

    对象交互的变化

    封装对象间的交互

    开闭原则

    17

    Memento

    一般

    代码级

    编码时

    比较简单

    状态的辅助保存

    封装对象状态的变化

    接口隔离原则

    18

    State

    一般

    应用级

    设计时、编码时

    一般

    对象状态的变化

    封装与状态相关的行为

    单一职责原则

    19

    Visitor

    一般

    应用级

    设计时

    比较复杂

    对象操作变化

    封装对象操作变化

    开闭原则

    20

    Prototype

    不太常用

    应用级

    编码时、重构时

    比较简单

    实例化的类

    封装对原型的拷贝

    依赖倒置原则

    21

    Flyweight

    不太常用

    代码级、应用级

    设计时

    一般

    系统开销的优化

    封装对象的获取

    22

    Chain of Resp.

    不太常用

    应用级、构架级

    设计时、编码时

    比较复杂

    对象的请求过程

    封装对象的责任范围

    23

    Interpreter

    不太常用

    应用级

    设计时

    比较复杂

    领域问题的变化

    封装特定领域的变化

  • 相关阅读:
    mac安装和启动mongodb
    Promise
    Vue 对象更改检测注意事项
    Vue 改变数组触发视图更新
    MBE风格图标
    为什么vue中的data用return返回
    数据库补充知识之sql编程
    第一阶段:Python开发基础 day45 数据库基础知识之子查询视图的相关操作事务和游标等
    第一阶段:Python开发基础 day44 数据库基础知识之多表查询
    第一阶段:Python开发基础 day43 数据库基础知识之多表操作
  • 原文地址:https://www.cnblogs.com/xqzt/p/5637118.html
Copyright © 2011-2022 走看看