设计模式分组

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. crf++分词

    1.linux下安装crf工具包 先下载CRF++-0.58.tar.xz,在Linux环境下安装CRF工具包 https://github.com/taku910/crfpp 解压到某一个目录下面 ...

  2. python爬去壁纸网站上的所有壁纸

    import requests as r 2 from bs4 import BeautifulSoup 3 import os 4 base_url = "http://www.win40 ...

  3. 练习1—参数传递、递归调用(Java)

    1.方法参数的值传递机制 1.说明 方法:必须由其所在类或对象调用才有意义.若方法含有参数: 形参:方法声明时的参数: 实参:方法调用时实际传给形参的参数值 Java的实参值如何传入方法:Java里方 ...

  4. Cup HDU - 2289

    题目传送门:https://vjudge.net/problem/HDU-2289 题意:有一个上口小于底部的圆台形水杯,告诉我们水的体积求水高度. 思路:利用高中数学知识求rr然后二分求h,具体化简 ...

  5. redis雪崩,穿透,击穿

    缓存雪崩:同一时间大量key到过期时间失效,可在设置失效时间时加随机数,如果直接修改数据库,那么一定会有不一致,通过失效时间去反复刷新缩短不一致的时间, 为了避免数据一直存在,一定要设置过期时间如果通 ...

  6. 认识Python解释器和PyCharm编辑器

    (1)安装Python解释器 Python官网:https://www.python.org/ 下载对应机器(Windows/Mac)的安装包: 百度网盘地址: 链接:https://pan.baid ...

  7. 如果要做优化,CSS提高性能的方法有哪些?

    一.前言 每一个网页都离不开css,但是很多人又认为,css主要是用来完成页面布局的,像一些细节或者优化,就不需要怎么考虑,实际上这种想法是不正确的 作为页面渲染和内容展现的重要环节,css影响着用户 ...

  8. 承接上一篇,whale系统开篇,聊聊用户认证

    写在前面 上次老猫和大家说过想要开发一个系统,从简单的权限开始做起,有的网友表示还是挺支持的,但是有的网友嗤之以鼻,认为太简单了,不过也没事,简单归简单,主要的还是个人技术的一个整合和实战. 没错,系 ...

  9. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria单机

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria单机 欢迎加QQ群:1026880196 进行交流学习 一. 环境信息 1. 硬件信息 型号:Dell ...

  10. 使用nvm管理node.js版本以及更换npm淘宝镜像源

    目录 1,前言 2,安装nvm 3,nvm的使用 4,错误处理 5,修改npm默认镜像源 6,win10下cnpm报错 1,前言 注意:此教程仅限Windows,Mac可能不适用 在我们的日常开发中可 ...