.NET Design Patterns
设计模式分组
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的更多相关文章
- Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...
- Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】
原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...
- Head First Design Patterns
From Head First Design Patterns. Design Principle: Idnetify the aspects of your application that var ...
- Apex Design Patterns
Apex allows you to build just about any custom solution on the Force.com platform. But what are the ...
- [Design Patterns] 4. Creation Pattern
设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性.它是代码编制真正实现工程化. 四个关键元素 ...
- [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. 软件模 ...
- [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 ...
- 设计模式(Design Patterns)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- Learning JavaScript Design Patterns The Observer Pattern
The Observer Pattern The Observer is a design pattern where an object (known as a subject) maintains ...
- Learning JavaScript Design Patterns The Module Pattern
The Module Pattern Modules Modules are an integral piece of any robust application's architecture an ...
随机推荐
- 用水浒传来学习OKR
用水浒传来学习OKR 目录 用水浒传来学习OKR 0x00 摘要 0x01 OKR 1.1 基本概念 1.2 OKR管理的意义 1.3 Objective 1.3.1 什么是好的O 1.3.2 上下级 ...
- 数据搬运组件:基于Sqoop管理数据导入和导出
本文源码:GitHub || GitEE 一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.ora ...
- vue项目中,更改数组元素的值,视图没有实时更新?
问题背景: export default { data(){ showItems: [false, false, false, false] }, methods: { showItem(index) ...
- 数据表设计之主键自增、UUID或联合主键
最近在做数据库设计的时候(以MySQL为主),遇到不少困惑,因为之前做数据库表设计,基本上主键都是使用自增的形式,最近因为这种做法,被领导指出存在一些不足,于是我想搞明白哪里不足. 一.MySQL为什 ...
- 痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结. 本篇实际上是<IAR在线调试时设不同复位类型可能会导致i.M ...
- [Fundamental of Power Electronics]-PART II-7. 交流等效电路建模-7.5 状态空间平均 7.6 本章小结
7.5 状态空间平均 现有文献中已经出现了很多变换器交流建模的方法,其中包括电流注入法,电路平均和状态空间平均法.尽管某种特定方法的支持者可能更愿意使用该方法去建模,但所有方法的最终结果都是等效的.并 ...
- OO UNIT 1 个人单元总结
面向对象课程--第一单元个人总结 作业分析 第一次作业 概要 本次作业主要对简单幂函数的多项式进行求导计算,要点在于对输入字符串的处理,利用正则表达式匹配即可,并且需要对输出表达式的长度进行优化. 度 ...
- spring-cloud-sleuth分布式服务跟踪
通过之前的 Spring Cloud 组件学习, 实际上我们已经能够通过使用它们搭建起一 个基础的微服务架构系统来实现业务需求了. 但是, 随着业务的发展, 系统规模也会变得越来越大, 各微服务间的调 ...
- Spring Cloud微服务如何实现熔断降级?
熔断限流概述 在基于Spring Cloud的微服务架构体系下,按照系统功能边界的不同划分,原先大而全的系统会被拆分为多个不同的微服务,而相应的微服务会提供一组功能关联的服务接口,并向系统中的其他微服 ...
- PAT A1032 Sharing
题意:给出两条链表的首地址以及若干节点的地址,数据,下一个节点的地址,求两条链表的首个共用节点的地址.如果两条链表没有共用节点,则输出-1.思路步骤1:由于地址的范围很小,因此可以直接用静态链表,但是 ...