C#设计模式 学习笔记
C#设计模式 学习笔记
码农小飞飞
在手游开发的路上越走越远!
展开
-
面向对象设计原则
7个常用的面向对象的设计原则单一职责原则、开闭原则、里氏代换原则、依赖倒转原则、接口隔离原则、合成复用原则以及迪米特法则。单一职责原则Single Responsibility Principle (SRP),一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。另一种定义:就一个类而言,应该仅有一个引起它变化的原因。一个类(大到模块,小到方法)承担的职责越多,它的可复用性就越小。一个类...原创 2018-07-03 17:14:59 · 83 阅读 · 0 评论 -
访问者模式
1.概述访问者模式(Visitor Pattern):表示一个作用于某个对象结构的各个元素的操作。访问者模式让你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2.结构(1)Visitor(抽象访问者):抽象访问者为对象结构中每一个具体元素类声明一个访问操作,从这个操作的名称或参数类型大家可以清楚地知道需要访问的具体元素的类型,具体访问者需要实现这些操作方法,定义对这些元素的...原创 2019-05-22 11:37:32 · 107 阅读 · 0 评论 -
模板方法模式
1.概述模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个模板方法的方法来定义这些基本方法的执行次序,而通过其子类...原创 2019-05-21 15:48:20 · 77 阅读 · 0 评论 -
策略模式
1.概述策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让他们可以相互替换。策略模式让算法可以独立于使用它的客户变化。又称政策(Policy)模式,是一种对象行为型模式。2.结构(1)Context(环境类):环境类是使用算法的角色,它在解决某个问题(实现某个功能)时可以使用多种策略。在环境类里维持一个抽象策略类的引用。(2)Strateg...原创 2019-05-21 15:16:15 · 89 阅读 · 0 评论 -
设计模式概述
简介在GoF的经典著作《设计模式:可复用面向对象软件的基础》一书中共描述了23种设计模式。按照目的或范围分类范围\目的 创建型模式 结构型模式 行为型模式 类模式 工厂方法模式 (类)适配器模式 解释器模式 模板方法模式 对象模式 抽象工厂模式 建造者模式 原型模式 单例模式 ...原创 2019-10-09 11:03:19 · 103 阅读 · 0 评论 -
简单工厂模式
1.概述简单工厂模式 (Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。又被称为,静态工厂方法(Static Factory Method)。2.结构简单工厂模式包含3个角色:(1)Factory 工厂角色,是简单工厂模式的核心,负责实现创建所有产品实例的内部逻辑;工厂类可以被外界直接调用;...原创 2019-04-18 15:33:02 · 240 阅读 · 0 评论 -
状态模式
1.概述状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中的某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化。对...原创 2019-05-20 18:17:08 · 83 阅读 · 0 评论 -
观察者模式
1.概述观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象都得到通知并被自动更新。一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。发生改变的对象称为观察对象,被通知的对象称为观察者。又称发布-订阅(Publish-Subscribe)模式、模型-视图(model-View)模式、源-监听器(So...原创 2019-05-20 17:25:07 · 76 阅读 · 0 评论 -
备忘录模式
1.概述备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在以后将对象恢复到原先保存的状态。备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原。备忘录模式是一种对象行为型模式,别名标记(Token)模式。...原创 2019-05-20 16:19:52 · 104 阅读 · 0 评论 -
中介者模式
1.概述中介者模式(Mediator Pattern):定义一个对象来封装一系列对象的交互。中介者模式使各对象之间不需要显示地相互引用,从而使其耦合松散,而且让你可以独立地改变他们之间的交互。中介者模式可以使对象之间的关系数量急剧减少,通过引入中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构。保证了对象结构上的稳定。对象之间的一些交互行为从各个对象中分离处来,集中封装在一个...原创 2019-05-17 16:38:16 · 115 阅读 · 0 评论 -
迭代器模式
1.概述迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中的各个元素,且不用暴露该对象的内部表示。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;后者既是可变化的,又是可分离的。因此,可以将遍历数据的行为从聚合对象中分离出来,封装在迭代器对象中,由迭代器来提供遍历聚合对象内部数据的行为,这将简化聚合对象的设计,更加符...原创 2019-05-17 15:28:55 · 107 阅读 · 0 评论 -
解释器模式
1.概述解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。在某些情况下了,为了更好地描述某一些特定类型的问题,可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应语言中的句子。定义中所指的语言是使用规定格式和语法的代码。2.结构(1)Abstract...原创 2019-05-16 18:25:32 · 77 阅读 · 0 评论 -
命令模式
1.概述命令模式 (Command Pattern):将一个请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式可以将请求发送者和接收者完全解耦发送者与接收者之间没有直接引用关系,发送者只需知道如何发送请求,而不必知道如何完成请求。命令模式是一种对象行为型模式,别名动作模式(Action)或事务模式(Transacti...原创 2019-05-16 16:52:01 · 166 阅读 · 0 评论 -
职责链模式
1.概述职责链模式(Chain of Responsibility Pattern):避免将一个请求的发送者与接受者耦合在一起,让多个对象都有机会处理请求。将接受请求的对象接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。职责链可以是一条直线,一个环或者树形结构,常见的是直线型,即沿着一条单向的链来传递请求。客户无需关心请求的处理细节以及请求的传递,只需将请求发送到链上。将...原创 2019-05-15 18:53:02 · 3967 阅读 · 0 评论 -
代理模式
1.概述代理模式(Proxy Pattern):给某一个对象提供一个代理或者占位符,并由代理对象来控制对原对象的访问。由于某些原因,客户类不想或者不能直接访问一个对象,此时可以通过一个被称为“代理”的第三者来实现间接访问。代理模式是一种对象型模式。在代理模式中引入一个新的代理对象,代理对象在客户类对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增加客户需要的额外的新服务...原创 2019-05-14 18:48:25 · 65 阅读 · 0 评论 -
享元模式
1.概述享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度对象的复用。享元对象能够做到共享的关键是区分了内部状态(Intrinsic State)和外部状态(Extrinsic State)。内部状态时存储在享元对象内部并且不会随环境改变而改变的状态,内部状态可以共享。外部状态时随环境改变而改变的,不可以共享的状态。要求被共享的对象必须是细粒度对象,又称为...原创 2019-05-14 17:23:28 · 352 阅读 · 0 评论 -
外观模式
1.概述外观模式(Facade Pattern):为子系统中的一组接口提供一个系统的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加易于使用。在外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需与外观角色打交道,而不需要与子系统内部的很多对象打交道。外观模式又称为门面模式,它是一种对象结构型模式。外观...原创 2019-05-14 16:10:39 · 86 阅读 · 0 评论 -
装饰模式
1.概述装饰模式(Decorator Pattern):动态地给一个对象增加一些额外的职责。就拓展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案。装饰模式是一种对象结构型模式,它以对客户透明的方式动态地给一个对象附加上更多的职责,可以在不需要创建更多子类的情况下,让对象的功能得以拓展。2.结构(1)Component(抽象构件):它是具体构件和抽象装饰类的共同父类,声明了...原创 2019-05-13 15:13:03 · 83 阅读 · 0 评论 -
组合模式
1.概述组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有 部分- 整体 关系的层次结构。组合模式让客户可以统一对待单个对象和组合对象。又称,部分-整体(Part-Whole)模式,属于对象结构型模式。2.结构1.Compoenet(抽象构件):接口或抽象类,为叶子构件和容器构件的父类。包含子类的共有行为和实现。定义了访问及管理它的子构件的方法,如增...原创 2019-05-09 15:35:13 · 132 阅读 · 0 评论 -
桥接模式
1.概述桥接模式(Bridge Pattern):将抽象部分与它的实现部分解耦,使得两者都能够独立变化。又称,柄体(Handle and Body)模式或接口(Interface)模式。用抽象关联取代了传统的多层继承。2.结构(1)Abstraction(抽象类):定义抽象类接口,通常是抽象类而不是接口。定义并维护一个Implementor(实现类接口)类型的对象,关联关系。(...原创 2019-04-19 19:05:20 · 113 阅读 · 0 评论 -
适配器模式
1.概述适配器模式(Adapter Pattern):将一个类的接口转换成用户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。又称,包装器(Wrapper)模式。既可以作为类结构型模式,也可以作为对象结构型模式;2.结构(1)Target(目标抽象类):定义用户所需的接口。在类结构型模式中,由于C#不支持类的多继承,它只能是接口。(2)Adapter(适配器类):...原创 2019-04-19 17:43:18 · 109 阅读 · 0 评论 -
单例模式
1.概述单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一的实例。某个类只有一个实例,还得自行创建这个实例,还得自行向整个系统提供这个实例。2.结构Singleton(单例类):私有构造函数,静态私有成员变量,静态共有工厂方法。3.实现using UnityEngine;namespace Singleton{...原创 2019-04-19 15:55:47 · 184 阅读 · 0 评论 -
原型模式
1.概述原型模式(Prototype Pattern):使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。简单说就是对象的自我复制。(1)浅克隆:如果原型对象的成员变量是值类型,将复制一份给克隆对象;如果原型对象的成员变量是引用类型,则将应用对象的地址复制一份给克隆对象。(2)深克隆:无论原型对象的成员变量是值类型还是引用类型,都将复制一份给克隆对象。2.结...原创 2019-04-19 15:06:05 · 112 阅读 · 0 评论 -
建造者模式
1.概述建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2.结构(1)Builder(抽象建造者):它为创建一个产品Product对象的各个部分指定抽象接口;该接口一般包含两类方法,一类是BuildPartX(),用于创建复杂对象的各个部分;另一类方法是GetResult(),用于返回复杂对象。(2)Concr...原创 2019-04-19 11:45:12 · 111 阅读 · 0 评论 -
抽象工厂模式
1.概述抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。又称为,工具(Kit)模式。2.结构(1)AbstractFactory(抽象工厂):它声明一组用于创建一组产品的方法,每个方法对应一种产品。这些产品构成了一个产品族,每一种产品都位于某个产品等级结构中。(2)ConcreteFactor...原创 2019-04-18 17:56:58 · 103 阅读 · 0 评论 -
工厂方法模式
1.概述工厂方法模式 (Factory Method Pattern):定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。有称为,虚拟构造器模式(Virtual Constructor Pattern)、多态工厂模式(Polymorphic Factory Pattern)。2.结构(1)Product(抽象产品),产品对象的父类...原创 2019-04-18 16:51:27 · 93 阅读 · 0 评论