设计模式分组

GoF设计模式著作中的23种设计模式分为3组:创建型(Creational)、结构型(Structural)和行为型(Behavional)。

创建型

创建型处理对象构造和引用。它们将对象实例的实例化责任从任何客户代码中抽象出来,从而让代码保持松散耦合,将创建负责对象的责任放到一个地方,这遵循了单一职责原则和分离关注点原则。

下面是“创建型”分组中的模式。

  • Abstract Factory(抽象工厂)模式:提供一个接口来创建一组相关的对象。
  • Factory Method(工厂方法)模式:支持使用一个类来委托创建有效对象的责任。
  • Builder(生成器)模式:将对象本身的构造分离出来,从而能够创建对象的不同版本。``
  • Prototype(原型)模式:能够从一个原型实例来复制或克隆类,而不是创建新实例。
  • Singleton(单例)模式:支持一个类只能实例化一次,并且只有一个可用来访问它的全局访问点。

结构型

结构型模式处理对象的组合与关系,以满足大型系统的需要。

下面是“创建型”分组中的模式。

  • Adapter(适配器)模式:使不兼容接口的类能够一起使用。
  • Bridge(桥接)模式:将抽象与其实现分离,允许实现和抽象彼此独立地改变。
  • Composite(组合)模式:可以像对待对象的单个实例那样来对待一组表示层次结构的对象。
  • Decorator(装饰器)模式:能够动态包装一个类并扩展其行为。
  • Facade(门面)模式:提供一个简单的接口并控制对一组复杂接口和子系统的访问。
  • Flyweight(享元)模式:提供一种在许多小类之间高效共享数据的方式。
  • Proxy(代理)模式:为一个实例化成本很高的更复杂的类提供一个占位符。

行为型

行为型模式处理对象之间在责任和算法方面的通信。这个分组中的模式将复杂行为封装起来并将其从系统控制流程中抽象出来,这样就是复杂系统更容易理解和维护。

下面是下“行为型”分组中的模式。

  • Chain of Responsibility(责任链)模式:允许将命令动态链接起来处理请求。
  • Command(命令)模式:将一个方法封装成一个对象,并将该命令的执行与它的调用者分离。
  • Interpreter(解释器)模式:指定如何执行某种语言中的语句。
  • Iterator(迭代器)模式:提供以形式化的方式来导航集合的方法。
  • Midiator(中介者)模式:定义一个对象,可以让其它两个对象进行通信而不必让它们知道彼此。
  • Memento(备忘录)模式:允许将对象恢复到以前的状态。
  • Observer(观察者)模式:定义一个或多个类在另一个类发生变化时接到报警。
  • State(状态)模式:允许对象通过委托给独立的、可改变的状态对象来改变自己的行为。
  • Strategy(策略)模式:能够将算法封装到一个类中并在运行时转换,以改变对象的行为。
  • Template Method(模板方法)模式:定义算法流程控制,但允许子类重写或实现执行步骤。
  • Visitor(访问者)模式:能够在类上执行新的功能而不影响类的结构。

各种设计模式意图、UML图、代码实现后续~~~

.NET Design Patterns的更多相关文章

  1. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  2. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  3. Head First Design Patterns

    From Head First Design Patterns. Design Principle: Idnetify the aspects of your application that var ...

  4. Apex Design Patterns

    Apex allows you to build just about any custom solution on the Force.com platform. But what are the ...

  5. [Design Patterns] 4. Creation Pattern

    设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性.它是代码编制真正实现工程化. 四个关键元素 ...

  6. [Design Patterns] 3. Software Pattern Overview

    When you're on the way which is unknown and dangerous, just follow your mind and steer the boat. 软件模 ...

  7. [Design Patterns] 1. Primary concept & term - UML

    It's time to review design patterns, especially when I reach the turning-point of my career. That's ...

  8. 设计模式(Design Patterns)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  9. Learning JavaScript Design Patterns The Observer Pattern

    The Observer Pattern The Observer is a design pattern where an object (known as a subject) maintains ...

  10. Learning JavaScript Design Patterns The Module Pattern

    The Module Pattern Modules Modules are an integral piece of any robust application's architecture an ...

随机推荐

  1. P2260 [清华集训2012]模积和 【整除分块】

    一.题目 P2260 [清华集训2012]模积和 二.分析 参考文章:click here 具体的公式推导可以看参考文章.博主的证明很详细. 自己在写的时候问题不在公式推导,公式还是能够比较顺利的推导 ...

  2. 仿MSDN的帮助系统

    作为软件开发人员,软件做好后,接下来就是编写文档.我自己也是做软件的,经常有用户询问软件的安装与使用, 我一直很喜欢微软的MSDN帮助系统,简介.大气,使用方便. 网上也找了很久,感觉一直没有合适的, ...

  3. Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)

    初始 Java 语言 Java SE -- Java Platform, Standard Edition 是 Java 平台的基础 Java SE 以前称为 J2SE, 可以编写桌面应用和基于 we ...

  4. unbutu的dpkg被中断的解决办法

    直接sudo apt update进行重新配置就行

  5. Line-line Intersection Gym - 102220C

    题目链接:https://vjudge.net/problem/Gym-102220C 题意:求n 条直线两两相交有几对(也可以重合). 思路:用map和pair存所有直线的斜率和与X轴的交点,假设与 ...

  6. C#上机实验(三)

    源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespac ...

  7. python3 中is和==的区别

    is    身份运算符,用来判断对象是否属于同一地址 (python内置函数id() 可以返回对象地址) ==  比较运算符,用于判断值是否相同

  8. Ubuntu20.04linux内核(5.4.0版本)编译准备与实现过程-编译前准备(1)

    最近项目也和linux kernel技术有关,调试内核和内核模块.修改内核源码,是学习内核的重要技术手段之一.应用这些技术时,都有一本基本的要求,那就是编译内核.因此,在分析内核调试技术之前,本随笔给 ...

  9. python基础之流程控制(2)

    今天将是基础篇的最后一篇,咱们来补上最后一个内容,流程控制for循环 For 循环 一.为什么有for循环? for循环能做的事情,while循环全都可以实现,但是在某些情境下,for循环相对于whi ...

  10. shell算数和逻辑运算

    算术运算 Shell允许在某些情况下对算术表达式进行求值,比如:let和declare 内置命令,(( ))复合命令和算术扩 展.求值以固定宽度的整数进行,不检查溢出,尽管除以0 被困并标记为错误.运 ...