![](https://img-blog.csdnimg.cn/20190216145609593.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#设计模式
设计模式的读书笔记
鹅厂程序小哥
与你一起写程序 | 知乎:鹅厂程序小哥 | 微信公众号:鹅厂程序小哥
展开
-
游戏中的设计模式
使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏开发并不是很适配。根据经验,精挑细选后,在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一、观察者模式 Observer观察者的设计意图和作用是: 它将对象与对象之间创建一种依赖关系,...原创 2019-03-25 10:59:16 · 579 阅读 · 0 评论 -
C#设计模式读书笔记之解释器模式 (Interpreter Pattern)
解释器模式 (Interpreter Pattern)1. 概述 定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。2. 模式中的角色 2.1 AbstractExpression(抽象表达式):在抽象表达式中声明了抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。 2.2 TerminalEx...原创 2019-03-08 10:27:21 · 473 阅读 · 0 评论 -
C#设计模式读书笔记之备忘录模式 (Memento Pattern)
备忘录模式 (Memento Pattern)【使用频率:★★☆☆☆】1. 概述 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。2. 模式中的角色 2.1 Originator(原发器):它是一个普通类,可以创建一个备忘录,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设...原创 2019-03-08 10:26:54 · 221 阅读 · 0 评论 -
C#设计模式读书笔记之访问者模式 (Visitor Pattern)
访问者模式 (Visitor Pattern)【使用频率:★☆☆☆☆】1. 概述: 提供一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。2. 模式中的角色 2.1 Vistor(抽象访问者):抽象访问者为对象结构中每一个具体元素类ConcreteElement声明一个访问操作,从这个操作的名称或参数类型可以清楚知道需要访...原创 2019-03-08 10:26:59 · 281 阅读 · 0 评论 -
C#设计模式读书笔记之原型模式 (Prototype Pattern)
原型模式 (Prototype Pattern)【使用频率:★★★☆☆】1. 概述: 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。2. 模式中的角色 2.1 Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。 2.2 ConcretePrototype(...原创 2019-03-08 10:27:06 · 167 阅读 · 0 评论 -
C#设计模式读书笔记之代理模式 (Proxy Pattern)
代理模式 (Proxy Pattern)【使用频率:★★★★☆】1. 概述: 给某一个对象提供一个代理,并由代理对象来控制对原对象的访问。2. 模式中的角色 2.1Subject(抽象对象):它声明了真实对象和代理对象的共同接口,这样一来在任何使用真实对象的地方都可以使用代理对象,客户端通常需要针对抽象对象角色进行编程。 2.2Proxy(代理对象):代...原创 2019-03-08 10:27:11 · 205 阅读 · 0 评论 -
C#设计模式读书笔记之迭代器模式 (Iterator Pattern)
迭代器模式 (Iterator Pattern)【使用频率:★★★★★】1. 概述: 所谓迭代器模式就是提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。2. 模式中的角色 2.1 Iterator(抽象迭代器):它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法,例如:用于获取第一个元素的first()方法,用于访问下一个元素的next()方法,用...原创 2019-03-08 10:27:17 · 257 阅读 · 0 评论 -
C#设计模式读书笔记之装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern)【使用频率:★★★☆☆】1. 概述 动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。可以在不改变一个对象本身功能的基础上给对象增加额外的新行为。 装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰...原创 2019-03-07 00:29:50 · 287 阅读 · 0 评论 -
C#设计模式读书笔记之适配器模式 (Adapter Pattern)
适配器模式 (Adapter Pattern)【使用频率:★★★☆☆】1. 概述: 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。2. 模式中的角色 2.1 Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。2.2 Adapter(适配器类):适配器可...原创 2019-03-06 10:53:08 · 470 阅读 · 0 评论 -
C#设计模式读书笔记之职责链模式 (Chain of Responsibility Pattern)
职责链模式 (Chain of Responsibility Pattern)【使用频率:★★☆☆☆】1. 概述 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。2. 模式中的角色 2.1 Handler(抽象处理者):它定义了一个处理请求的接口,一般设计为抽象类...原创 2019-03-08 10:26:48 · 248 阅读 · 0 评论 -
C#设计模式读书笔记之命令模式(Command Pattern)
命令模式(Command Pattern)【使用频率:★★★★☆】1. 概述 将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。命令模式的本质就在于将命令进行封装,将发出命令的责任和执行命令的责任分开。2. 模式中...原创 2019-03-07 00:30:43 · 258 阅读 · 0 评论 -
C#设计模式读书笔记之享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)【使用频率:★★★☆☆】1. 概述 运用共享技术有效地支持大量细粒度的对象。内部状态:在享元对象内部不随外界环境改变而改变的共享部分。外部状态:随着环境的改变而改变,不能够共享的状态就是外部状态。享元模式的核心在于享元工厂类,享元工厂类的作用在于提供一个用于存储享元对象的享元池,用户需要对象时,首先从享元池中获取,如果享元池中不存...原创 2019-03-07 00:30:36 · 193 阅读 · 0 评论 -
C#设计模式读书笔记之建造者模式(Builder Pattern)
建造者模式(Builder Pattern)【使用频率:★★☆☆☆】1. 概述 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。在建造者模式的定义中提到了复杂对象,那么什么是复杂对象?简单来说,复杂对象是指那些包含多个成员属性的对象。建造者模式与抽象工厂模式有点相似,但是建造者模式返回一个完整的复杂产品,而抽象工厂模式返回一系列...原创 2019-03-07 00:30:25 · 198 阅读 · 0 评论 -
C#设计模式读书笔记之抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)【使用频率:★★★★★】1. 概述封装出一个接口,这个接口负责创建一系列互相关联的对象,但用户在使用接口时不需要指定对象所在的具体的类。 抽象工厂模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对应的系列来创建一个具体的工厂类别。抽象工厂模式与工厂方法模式最大的区别在...原创 2019-03-07 00:30:15 · 253 阅读 · 0 评论 -
C#设计模式读书笔记之工厂方法模式(Factory Method Pattern)
工厂方法模式(Factory Method Pattern)【使用频率:★★★★★】1. 概述: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中,核心工厂类不在负责产品的创建,而是将具体的创建工作交给子类去完成。也就是这个核心工厂仅仅只是提供创建的接口,具体实现方法交给继承它的...原创 2019-03-07 00:30:10 · 187 阅读 · 0 评论 -
C#设计模式读书笔记之简单工厂模式(Simple Factory Pattern)
简单工厂模式(Simple Factory Pattern)【使用频率:★★★☆☆】1. 概述: 将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到2. 模式中的角色 2.1 工厂类(Simple Factory): 只包含了创建具体类的静态方法。 2.2 抽象产品(Product):定义简单工厂中要返回的产品。 2...原创 2019-03-07 00:30:01 · 216 阅读 · 0 评论 -
C#设计模式读书笔记之模板方法模式(Template Method pattern)
模板方法模式(Template Method pattern)【使用频率:★★★☆☆】1. 概述某个方法的实现需要多个步骤(类似“请客”),其中有些步骤是固定的(类似“点单”和“买单”),而有些步骤并不固定,存在可变性(类似“吃东西”)。为了提高代码的复用性和系统的灵活性,可以使用一种称之为模板方法模式的设计模式来对这类情况进行设计。定义一个操作中算法的框架,而将一些步骤延迟到子类中。...原创 2019-03-07 00:30:55 · 222 阅读 · 0 评论 -
C#设计模式读书笔记之桥接模式(Bridge pattern)
桥接模式(Bridge pattern)【使用频率:★★★☆☆】1. 概述将抽象部分与它的实现部分分离开来,使他们都可以独立变化。套用《大话设计模式》里面的就是实现系统可能有多个角度分类,每一种角度都可能变化,那么把这种多角度分类给分离出来让他们独立变化,减少他们之间耦合。2. 解决的问题 在软件系统中,有些类型由于自身的逻辑,它具有两个或多个维度的变化。为了解决这种多维度变...原创 2019-03-08 10:26:36 · 246 阅读 · 0 评论 -
C#设计模式读书笔记之中介者模式(Mediator pattern)
中介者模式(Mediator pattern)【使用频率:★★☆☆☆】1.概述:用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式是“迪米特法则”的一个典型应用2. 模式中的角色2.1 Mediator(抽象中介者):它定义一个接口,该接口用于与各同事对象之间进行通信。2.2 Concr...原创 2019-03-08 10:26:41 · 182 阅读 · 0 评论 -
C#设计模式读书笔记之外观模式(Facade pattern)
外观模式(Facade pattern)【使用频率:★★★★★】1. 概述 为复杂的子系统中提供一个统一的入口,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。2. 模式中的角色 2.1 外观类(Facade):在外观角色中可以知道相关的(一个或...原创 2019-03-07 00:31:03 · 163 阅读 · 0 评论 -
C#设计模式读书笔记之策略模式(Strategy pattern)
策略模式(Strategy pattern)【使用频率:★★★★☆】1. 概述定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化。与状态模式是如此的相似,就犹如一对双胞胎一样。只不过状态模式是通过改变对象内部的状态来帮助对象控制自己的行为,而策略模式则是围绕可以互换的算法来创建成功业务。2. 模式中的角色2.1 Context(上下...原创 2019-03-07 00:31:16 · 235 阅读 · 0 评论 -
C#设计模式读书笔记之观察者模式(Observer Pattern)
观察者模式(Observer Pattern)【使用频率:★★★★★】1. 概述 定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式的别名包括发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察...原创 2019-02-16 22:35:57 · 244 阅读 · 0 评论 -
C#设计模式读书笔记之线程安全的单例模式(Singleton Pattern)
单例模式(Singleton Pattern)【使用频率:★★★★★】1.概述:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例指的是只能存在一个实例的类,在C#中,更准确的说法是在每个AppDomain之中只能存在一个实例的类,它是软件工程中使用最多的几种模式之一。在第一个使用者创建了这个类的实例之后,其后需要使用这...原创 2019-02-14 22:31:16 · 1123 阅读 · 0 评论 -
C#设计模式读书笔记之组合模式(Composite Pattern)
组合模式(Composite Pattern)【使用频率:★★★★☆】1. 概述 组合多个对象形成树形结构,以表示具有“整体-部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。组合模式的关键是定义了一个抽象组件类,它既可以代表叶子,又可以代表容器,而客户端针对该抽象组件类进行编程,无须知道它到底表示的是叶子还是容器,可以对其进行统一处理。...原创 2019-02-15 17:48:12 · 253 阅读 · 0 评论 -
C#设计模式读书笔记之状态模式(State Pattern)
状态模式(State pattern)【使用频率:★★★☆☆】1.概述:允许一个对象在其内部状态改变时改变它的行为。2.解决的问题:主要解决的是当控制一个对象状态转换的条件过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的逻辑判断简单化。3.模式中的角色 3.1上下文环境(Context):在Context类中维护一个抽象状态类State的实例,这个...原创 2019-01-28 11:02:59 · 352 阅读 · 0 评论 -
C#设计模式读书笔记之设计模式的设计原则
设计模式的设计原则:(重要性从上往下排列)开闭原则:对扩展开放,对修改关闭依赖倒转原则:高层模块不应该依赖底层模块,它们都应该依赖抽象;要针对抽象层编程,而不要针对具体类编程。单一职责原则:类的职责要单一,不能将太多的职责放在一个类中里氏代换原则:使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用基类类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父类...原创 2019-01-14 22:31:06 · 264 阅读 · 0 评论