.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 ...
随机推荐
- Python接口自动化实现
一.代码结构: 二.接口签名实现: 1. 设所有发送的数据集合为M,将集合M内非空参数值的参数按照[参数名+"="+参数值]的ASCII码从小到大排序(字典序),然后按拼接key1 ...
- 主成分分析 | Principal Components Analysis | PCA
理论 仅仅使用基本的线性代数知识,就可以推导出一种简单的机器学习算法,主成分分析(Principal Components Analysis, PCA). 假设有 $m$ 个点的集合:$\left\{ ...
- CSS水平布局
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 关于mysql事物和特性
事务的 四个特征(ACID) 事务具有四个特征:原子性( Atomicity ).一致性( Consistency ).隔离性( Isolation )和持续性( Durability ).这四个特性 ...
- P1047_校门外的树(JAVA语言)
题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米. 我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置: 数轴上的每个整数点,即0,1,2,-,L都种 ...
- EfficientNet & EfficientDet 论文解读
概述 总体而言,这两篇论文都在追求一件事,那就是它们名字中都有的 efficient.只是两篇文章的侧重点不一样,EfficientNet 主要时研究如何平衡模型的深度 (depth).宽度 (wid ...
- 给Nginx配置日志格式和调整日期格式
效果对比 官方默认日志格式 # 官方默认日志格式 log_format main '$server_name $remote_addr - $remote_user [$time_local] &qu ...
- Apache SkyWalking 告警配置指南
Apache SkyWalking Apache SkyWalking是分布式系统的应用程序性能监视工具(Application Performance Management,APM),专为微服务.云 ...
- JVM--Java核心面试知识整理(一)
JVM 基本概念 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈. 一个垃圾回收,堆和 一个存储方法域.JVM 是运行在操作系统之上的,它与硬件没有直接的交互 ...
- 创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用
翻译自 Mohamad Lawand 2021年3月24日的文章 <.NET 5 Console App with Dependency Injection, Serilog Logging, ...