设计模式(c#)系列
常用设计模式介绍,c#实现版本
sophiemantela
个人邮箱:1457909046@qq.com
展开
-
设计模式---Mediator Pattern
中介者模式Mediator PatternMediator 角色分析类图代码示例 Mediator Pattern 中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散。 Mediator 角色分析 中介者模式包含四个角色: Mediator: 抽象中介者 用于定义一个接口,该接口用于与各同事对象之间的通信; ConcreteMediator: 具体中介者 是抽象中介者的子类,通过协调各个同事对象来实现协作行为,了解并维护它的各个同事对象的引用;原创 2020-06-05 16:49:17 · 219 阅读 · 0 评论 -
设计模式-----State Pattern
State Pattern(状态模式)state patternState Pattern 角色分析代码示例示例2总结 state pattern 状态模式:状态模式一般用来实现状态机。状态机常用在游戏、工作流引擎等开发中。 有限状态机(Finite-State Machine)FSM,有三个组成部分:状态(state)、事件(Event)、动作(Action)。事件也被称为转移条件(Transition Condition)。事件触发状态的转移,可能触发动作执行,也可不触发动作执行。 State Pa原创 2020-05-29 15:04:04 · 176 阅读 · 0 评论 -
设计模式---Template Pattern
Template PatternTemplate Pattern代码实现示例2总结 Template Pattern 模板模式:将一个算法分成几个部分,分析算法中共同的部分和变化的部分,将算法的骨架抽象到一个类,变化的部分在子类中实现,可以为算法中共同部分设置默认的实现。 代码实现 /* *Template Method:模板模式 */ using System; namespace Pattern01 { class Program { static void M原创 2020-05-28 14:13:53 · 138 阅读 · 0 评论 -
设计模式----Strategy Pattern
Strategy Pattern1. strategyPattern2. 模式分析3.代码示例4. 示例2总结 1. strategyPattern 策略模式(strategyPattern): 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式是一种对象行为型模式。可以解决选择多种算法情况下,使用 if…else 所带来的复杂和难以维护。 2. 模式分析 策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。 策略原创 2020-05-27 14:35:16 · 195 阅读 · 0 评论 -
设计模式--Iterator Pattern
Iterator Pattern 提供一个迭代器,用于访问不同数据类型的集合。 代码示例 /* *Iterator Pattern:主题就是使用迭代器,遍历集合中的每一项 */ using System; using System.Collections.Generic; using System.Collections; namespace Pattern01 { class Program { static void Main(string[] args) .原创 2020-05-26 16:07:17 · 366 阅读 · 0 评论 -
设计模式---Observer Pattern
Observer Pattern 观察者模式: 对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 模式分析 观察者模式包含四个角色: (subject)目标又称为主题,它是指被观察的对象; (concreteSubject)具体目标是目标类的子类,通常它包含有经.原创 2020-05-26 09:55:08 · 230 阅读 · 0 评论 -
设计模式----Command Pattern
Command Pattern 将命令的请求者(invoker)与命令的执行者(receiver)解耦。 类图 代码示例 /* *command Pattern * */ using System; namespace Pattern03 { class Program { static void Main(string[] args) { // Create receiver, command, and invoke.原创 2020-05-25 10:12:25 · 152 阅读 · 0 评论 -
设计模式--chain of Responsibility
chain of Responsibility 责任链模式:为请求创建了一个处理链。每个处理器(handler)接收到这个请求时,都有两种选择:1. 处理这个请求;2 将这个请求传给下一个处理器。 Handlers are lined up one by one, forming a chain 代码示例 /* * chain of reaponility * 职责链模式 */ using System; namespace Pattern02 { class Program {.原创 2020-05-23 13:28:40 · 150 阅读 · 0 评论 -
设计模式---Proxy Pattern
Proxy Pattern 代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。它是一种对象结构型模式。 Proxy角色分析 代理模式包含三个角色: Subject (抽象主题角色): 声明了真实主题和代理主题的共同接口; Proxy(代理主题角色):内部包含对真实主题的引用,从而可以在任何时候操作真实主题对象; RealSubject(真实主题角色):定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作, Client:(客户端)可以通过.原创 2020-05-21 13:22:24 · 178 阅读 · 0 评论 -
设计模式---Flyweight pattern
Flyweight Pattern] 享元模式: 主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式。 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 String常量池、数据库连接池、缓冲池等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。 实现方式 用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。用 HashMap、Hash Table存储这些对象。 享元模式的核心在于享元工厂类,享元工厂类的作用在于提供..原创 2020-05-20 15:25:49 · 166 阅读 · 5 评论 -
设计模式-----Facade Pattern
Facade Pattern 在外观模式中,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 Facade模式角色分析: Facade角色: 是在客户端直接调用的角色,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理; Subsystem cla..原创 2020-05-19 17:22:48 · 247 阅读 · 0 评论 -
设计模式--decorator Pattern
Decorator Pattern 装饰模式用于动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。它是一种对象结构型模式。 Wrapping a gift, putting it in a box, and wrapping the box。 Decorator 模式分析 装饰模式包含四个角色: (Component)抽象构件: 定义了对象的接口,可以给这些对象动态增加职责(方法); (ConcreteComponent)具体构件: 定义了具体的构件对象..原创 2020-05-19 11:00:37 · 137 阅读 · 0 评论 -
设计模式---Composite
Composite Pattern 组合模式(Composite Design Pattern)主要功能是能够使客户端(Client Code) 平等的对待单一组件(Single Componets)和容器组件(Container Componen)。从而实现客户端代码与组件之间的解耦。 适用场景 Composites that contain Components, each of which could be a Composite. 组合中包含组件,每个组件有可能也是一个组合。 解决问题 ..原创 2020-05-18 13:42:44 · 137 阅读 · 0 评论 -
设计模式---Bridge Pattern
Bridge Pattern 将抽象与实现解耦,是抽象与实现可以独立变化。 模式分析 Abstraction : 抽象类中定义了一个实现类接口类型的对象并可以维护该对象; RefinedAbstraction : 扩充抽象类扩充由抽象类定义的接口,它实现了在抽象类中定义的抽象业务方法,在扩充抽象类中可以调用在实现类接口中定义的业务方法; Implementor: 实现类接口定义了实现类的接口,实现类接口仅提供基本操作,而抽象类定义的接口可能会做更多更复杂的操作; ConcreteImplementor.原创 2020-05-15 13:34:30 · 219 阅读 · 0 评论 -
设计模式---adapter pattern
Adapter Pattern 属于结构型模式,adapter 可以使由于接口不兼容而不能交互的类可以一起工作 adapter Pattern : 优点是将target类和adaptee类解耦,增加了类的透明性和复用性,同时系统的灵活性和扩展性都非常好,更换adapter或者增加新的adapter都非常方便,符合“开闭原则”; adapter pattern : 缺点是adapter类在很多编程语言中不能同时适配多个adaptee类, 对象adapter模式的缺点是很难置换adaptee..原创 2020-05-14 14:44:24 · 161 阅读 · 0 评论 -
设计模式---Prototype pattern
Prototype 模式 属于创建型模式 通过浅拷贝一个已经存在的对象,来创建一个对象,主要用于当对象的数据获取比较复杂,或获取对象成本较高时使用。 代码示例 /* *protoType pattern * Prototype pattern in which new objects * are created by copying pre-existing objects (prototypes) of the same class. * */..原创 2020-05-14 10:22:15 · 137 阅读 · 2 评论 -
设计模式 --builder pattern
builder pattern 在建造者模式中, 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。 角色分析: Builder: 为创建一个产品对象的各个部件指定抽象接口; Director: 负责安排复杂对象的建造次序,director与builder之间存在关联关系,可以在其construct()建造方法中调用builder对象的部件构造与装配方法,完成复杂对象的建造 ConcreteBuilder: 实现了Builder接口,实现各..原创 2020-05-13 15:53:32 · 590 阅读 · 0 评论 -
设计模式-----工厂模式
1 .简单工厂模式 定义 代码示例 2. 工厂方法 定义 代码示例 3. 抽象工厂 定义 代码示例 简单工厂模式 定义 适用场景: 在工厂类负责创建的对象较少时,使用将对象的创建与对象的使用过程分离。 实现:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 优点: 在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责。 缺点:在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。 [外链图片转存失败,源原创 2020-05-12 17:23:01 · 216 阅读 · 0 评论 -
单例模式------设计模式学习笔记(一)
单例模式------设计模式学习笔记(一) 单例模式一个类只有一个对象 构造函数私有,一个静态对象,并且提供一个静态的初始化对象的方法 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PatternTest { class Progr...原创 2020-04-28 16:41:16 · 111 阅读 · 0 评论