.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 ...
随机推荐
- Android的Proxy/Delegate Application框架
转自:http://blogs.360.cn/360mobile/2013/11/25/proxydelegate-application/#comment-77 有的时候,为了实现一些特殊需求,如界 ...
- 部署Angular应用到Github pages
https://jeneser.github.io/blog/2017/08/08/angular-deploying-app-github-pages/ Published: August 08, ...
- weex参考文章
1官网:https://weex.apache.org/zh/guide/introduction.html 2.weexui https://alibaba.github.io/weex-ui/ ...
- python-for表达式
for表达式用于其他区间,元组,列表等可迭代对象创建新的列表 [表达式 for 循环计数器 in 可迭代对象] for表达式与普通for循环的区别有两点 在for关键字之前定义一个表达式,该表达式通常 ...
- ch1_6_5求解旋转词问题
import java.util.Scanner; public class ch1_6_5求解旋转词问题 { public static void main(String[] args) { // ...
- 7、MyBatis教程之分页实现
8.分页实现 1.limit实现分页 思考:为什么需要分页? 在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使 ...
- Hystrix 实战经验分享
一.背景 Hystrix是Netlifx开源的一款容错框架,防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)等功能. 尽管说Hystrix官方已不再维护,且有A ...
- SSH&SSM
SSH和SSM的区别 SSH是Spring+Struts+Hibernate的缩写,是一种Web应用程序开源框架.框架系统分为四层:表选层.业务逻辑层.数据持久层和模块层.SSM是Spring+Spr ...
- [hash-bfs]USACO 3.2 Magic Squares 魔板
魔 板 魔板 魔板 题目描述 在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色 ...
- 【RocketMQ源码分析】深入消息存储(2)
前文回顾 CommitLog篇 --[RocketMQ源码分析]深入消息存储(1) MappedFile篇 --[RocketMQ源码分析]深入消息存储(3) 前文说完了一条消息如何被持久化到本地磁盘 ...