![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式(c#)系列
常用设计模式介绍,c#实现版本
sophiemantela
个人邮箱:1457909046@qq.com
展开
-
设计模式---Mediator Pattern
中介者模式Mediator PatternMediator 角色分析类图代码示例Mediator Pattern中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散。Mediator 角色分析中介者模式包含四个角色: Mediator: 抽象中介者用于定义一个接口,该接口用于与各同事对象之间的通信; ConcreteMediator: 具体中介者是抽象中介者的子类,通过协调各个同事对象来实现协作行为,了解并维护它的各个同事对象的引用;原创 2020-06-05 16:49:17 · 192 阅读 · 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 · 153 阅读 · 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 · 118 阅读 · 0 评论 -
设计模式----Strategy Pattern
Strategy Pattern1. strategyPattern2. 模式分析3.代码示例4. 示例2总结1. strategyPattern策略模式(strategyPattern): 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式是一种对象行为型模式。可以解决选择多种算法情况下,使用 if…else 所带来的复杂和难以维护。2. 模式分析策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。策略原创 2020-05-27 14:35:16 · 174 阅读 · 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 · 325 阅读 · 0 评论 -
设计模式---Observer Pattern
Observer Pattern观察者模式: 对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。模式分析观察者模式包含四个角色:(subject)目标又称为主题,它是指被观察的对象;(concreteSubject)具体目标是目标类的子类,通常它包含有经.原创 2020-05-26 09:55:08 · 209 阅读 · 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 · 122 阅读 · 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 · 128 阅读 · 0 评论 -
设计模式---Proxy Pattern
Proxy Pattern代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。它是一种对象结构型模式。Proxy角色分析代理模式包含三个角色:Subject (抽象主题角色): 声明了真实主题和代理主题的共同接口;Proxy(代理主题角色):内部包含对真实主题的引用,从而可以在任何时候操作真实主题对象;RealSubject(真实主题角色):定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业务操作,Client:(客户端)可以通过.原创 2020-05-21 13:22:24 · 157 阅读 · 0 评论 -
设计模式---Flyweight pattern
Flyweight Pattern]享元模式: 主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。String常量池、数据库连接池、缓冲池等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。实现方式用唯一标识码判断,如果在内存中有,则返回这个唯一标识码所标识的对象。用 HashMap、Hash Table存储这些对象。享元模式的核心在于享元工厂类,享元工厂类的作用在于提供..原创 2020-05-20 15:25:49 · 146 阅读 · 5 评论 -
设计模式-----Facade Pattern
Facade Pattern在外观模式中,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。Facade模式角色分析:Facade角色: 是在客户端直接调用的角色,在外观角色中可以知道相关的(一个或者多个)子系统的功能和责任,它将所有从客户端发来的请求委派到相应的子系统去,传递给相应的子系统对象处理;Subsystem cla..原创 2020-05-19 17:22:48 · 221 阅读 · 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 · 113 阅读 · 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 · 105 阅读 · 0 评论 -
设计模式---Bridge Pattern
Bridge Pattern将抽象与实现解耦,是抽象与实现可以独立变化。模式分析Abstraction : 抽象类中定义了一个实现类接口类型的对象并可以维护该对象;RefinedAbstraction : 扩充抽象类扩充由抽象类定义的接口,它实现了在抽象类中定义的抽象业务方法,在扩充抽象类中可以调用在实现类接口中定义的业务方法;Implementor: 实现类接口定义了实现类的接口,实现类接口仅提供基本操作,而抽象类定义的接口可能会做更多更复杂的操作;ConcreteImplementor.原创 2020-05-15 13:34:30 · 195 阅读 · 0 评论 -
设计模式---adapter pattern
Adapter Pattern属于结构型模式,adapter 可以使由于接口不兼容而不能交互的类可以一起工作adapter Pattern : 优点是将target类和adaptee类解耦,增加了类的透明性和复用性,同时系统的灵活性和扩展性都非常好,更换adapter或者增加新的adapter都非常方便,符合“开闭原则”;adapter pattern : 缺点是adapter类在很多编程语言中不能同时适配多个adaptee类,对象adapter模式的缺点是很难置换adaptee..原创 2020-05-14 14:44:24 · 142 阅读 · 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 · 109 阅读 · 2 评论 -
设计模式 --builder pattern
builder pattern在建造者模式中, 客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。角色分析:Builder: 为创建一个产品对象的各个部件指定抽象接口;Director: 负责安排复杂对象的建造次序,director与builder之间存在关联关系,可以在其construct()建造方法中调用builder对象的部件构造与装配方法,完成复杂对象的建造ConcreteBuilder: 实现了Builder接口,实现各..原创 2020-05-13 15:53:32 · 535 阅读 · 0 评论 -
设计模式-----工厂模式
1 .简单工厂模式定义代码示例2. 工厂方法定义代码示例3. 抽象工厂定义代码示例简单工厂模式定义适用场景: 在工厂类负责创建的对象较少时,使用将对象的创建与对象的使用过程分离。实现:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。优点: 在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责。缺点:在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。[外链图片转存失败,源原创 2020-05-12 17:23:01 · 197 阅读 · 0 评论 -
单例模式------设计模式学习笔记(一)
单例模式------设计模式学习笔记(一)单例模式一个类只有一个对象构造函数私有,一个静态对象,并且提供一个静态的初始化对象的方法代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace PatternTest{ class Progr...原创 2020-04-28 16:41:16 · 91 阅读 · 0 评论