
C#-设计模式
文章平均质量分 54
浊酒入清梦
作者很勤快,但是什么也没有留下...
展开
-
C# 设计模式-工厂方法(Factory Method)
以下是个人观点:用不同具体工厂创建不同的具体对象,代码仅处理具体对象的父类(或接口)声明工厂方法的抽象父类(类似于抽象工厂)、具体工厂、具体对象的父类、具体对象抽象工厂和工厂方法的区别:抽象工厂使用工厂方法创建一系列的对象工厂方法通常只创建一个对象using System;namespace FactoryMethod{ /// <summary> /// 声明工厂方法的抽象原创 2017-12-24 20:47:25 · 732 阅读 · 0 评论 -
C# 设计模式-桥接(Bridge)
将抽象部分和实现部分分离,使它们可以独立变化主要组成: Abstraction(抽象类) RefinedAbstraction(抽象类的子类) Implementor(实现接口) ConcreteImplementor(具体实现类)适配器和桥接的区别:适配器:用来帮助无关的类协同工作,通常在系统设计完成后才使用。 桥接:在系统开始时就使用,使抽象部分和实现部分分离。抽象和实现:usin原创 2017-12-28 20:36:53 · 721 阅读 · 0 评论 -
C# 设计模式-访问者(Visitor)
将每个类中的相关操作封装到一个独立的对象(Visitor)中,使得数据和操作进行分离。从而在不改变各元素类的前提下,定义有关这些元素的新操作。主要组成: Visitor-访问者父类,为每个元素声明一个访问操作。 ConcreteVisitor-具体访问者,实现Visitor父类声明的访问操作。 Element-元素父类,定义Accept(接受访问)操作。 ConcreteElement-具体原创 2018-01-13 19:03:03 · 385 阅读 · 0 评论 -
C# 设计模式-命令(Command)
将一个请求封装为一个对象,达到用不同请求对客户进行参数化。调用者通过某个命令来调用接收者执行相关操作,减弱调用者与接收者的耦合度。主要组成:Command-命令父类或接口ConcreteCommand-具体命令Invoker-调用者Receiver-接收者,执行命令指定的相关操作相关类:using System;namespace Command{原创 2018-01-04 18:32:00 · 2035 阅读 · 0 评论 -
C# 设计模式-组合(Composite)
将对象组合成树形结构以表示“部分-整体”的结构,使得对单个对象和组合对象的使用具有一致性。主要组成: Component-父组件 Leaf-叶节点 Composite-叶节点的组合相关类代码:using System;using System.Collections.Generic;namespace Composite{ /// <summary> /// 文件父组件原创 2017-12-29 18:30:41 · 879 阅读 · 0 评论 -
C# 设计模式-解释器(Interpreter)
给定一个语言,定义它文法的一种表示,并定义一个解释器,用于解释该表示。主要组成:AbstractExpression-抽象表达式TerminalExpression-终止符表达式NonterminalExpression-非终止符表达式Context-上下文相关类:using System;namespace Interpreter{原创 2018-01-05 20:45:10 · 2178 阅读 · 0 评论 -
C# 设计模式-迭代器(Iterator)
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。主要组成:Aggregate-聚合父类或接口ConcreteAggregate-具体聚合对象Iterator-迭代器父类或接口ConcreteIterator-具体迭代器相关类:using System;using System.Collections.Generic;na原创 2018-01-06 18:38:15 · 1018 阅读 · 0 评论 -
C# 设计模式-中介者(Mediator)
用一个中介对象来封装一系列对象的交互,使得各对象不需要显示地相互引用,从而耦合松散。主要组成:Mediator-中介者父类或接口ConcreteMediator-具体中介者Colleague-同事父类ConcreteColleague-具体同事类相关类:using System;using System.Collections.Generic;na原创 2018-01-07 19:47:34 · 1110 阅读 · 0 评论 -
C# 设计模式-备忘录(Menento)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存该状态。使得该对象可恢复到原先保存的状态。主要组成:Menento-备忘录,存储原发器的内部状态。Originator-原发器,创建备忘录,用于记录内部状态Caretaker-负责人,负责备忘录的管理相关类:using System.Collections.Generic;namespac原创 2018-01-08 18:32:05 · 427 阅读 · 0 评论 -
C# 设计模式-状态(State)
允许一个对象在其内部状态改变时改变它的行为。主要组成: Context-环境,上下文,客户主要使用该类 State-状态父类或接口 ConcreteState-具体状态相关类:using System;namespace State{ /// <summary> /// 手机(环境) /// </summary> class TelephoneContext原创 2018-01-10 18:37:17 · 770 阅读 · 0 评论 -
C# 设计模式-模板方法(Template Method)
定义一个操作中的算法骨架,将某些步骤延迟到子类中实现,使得子类可在不改变算法结构的前提下重定义某些步骤。主要组成:AbstractClass-抽象父类,实现模板方法,定义算法的骨架。 ConcreteClass-具体子类,重定义模板方法中的某些特定步骤。策略与模板方法区别:策略使用委托调用其他类来改变算法。 模板方法使用继承来改变算法的实现。相关类:using System;namespac原创 2018-01-12 18:11:32 · 1536 阅读 · 0 评论 -
C# 设计模式-职责链(Chain of Responsibility)
使多个对象都有机会处理请求,将这些对象连成一条链,并沿着该链传递请求,知道有对象处理它为止。主要组成: Handler-处理者父类 ConcreteHandler-具体处理者相关类:using System;namespace ChainofResponsibility{ /// <summary> /// 处理者父类 /// </summary> abstra原创 2018-01-03 18:47:09 · 311 阅读 · 0 评论 -
C# 设计模式-适配器(Adapter)
为了使得接口不兼容的类可以在一起工作,使用适配器模式分为两类适配器:类适配器:在C# 中,适配器继承Adaptee(被适配者),实现Target(目标)接口。该适配器可重定义Adaptee的部分行为。对象适配器:适配器引用Adaptee(被适配者),实现Target(目标)接口。该适配器允许与Adaptee及其子类同时工作,但是重定义Adaptee的行为比较困难。1.类适配器:using Sy原创 2017-12-27 19:03:03 · 2180 阅读 · 0 评论 -
C# 设计模式-生成器(Builder)
关键:导向器指导生成器一步步生成复杂产品。然后,导向器获取最终产品。意图:将产品的构建和具体部件分离。导向器负责产品的构建(组装)过程;生成器负责生成具体的不同部件。目的:同样的构建步骤,可获取不同的产品抽象工厂和生成器的异同:相同:创建复杂的对象。不同:抽象工厂:在具体工厂中创建一系列对象,并返回每个对象(相当于获取多个对象)。生成器:在导向器中使用生成器按同样的步骤,创建复杂对象(不同对象原创 2017-12-23 20:03:12 · 397 阅读 · 0 评论 -
C# 设计模式-抽象工厂(Abstract Factory)
具体工厂实现抽象工厂,创建不同的具体产品。工厂和相关接口、类:using System;namespace AbstractFactory{ /// <summary> /// 抽象工厂 /// </summary> interface IAbstractFactory { IPen CreatePen(); } /// <su原创 2017-12-22 19:34:09 · 229 阅读 · 0 评论 -
C# 设计模式-装饰(Decorator)
动态地给对象添加一些额外的职责功能主要组成: Component-抽象父类(接口) ConcreteComponent-具体对象 Decorator-装饰父类 ConcreteDecorator-具体装饰类装饰与适配器区别:装饰仅改变对象的职责,不改变对象的接口。 适配器给对象一个新的接口。装饰和组合的区别:组合目的在于对象的聚集。 装饰目的在于动态为对象添加职责。相关类定义:u原创 2017-12-30 19:16:48 · 546 阅读 · 0 评论 -
C# 设计模式-外观(Facade)
定义一个高层接口,为子系统中的一组接口提供一个一致的界面,使得子系统更加容易使用。主要组成: Facade-高层接口,负责处理请求,并代理给子系统 Subsystem-子系统相关类:using System;namespace Facade{ /// <summary> /// 大脑高层 /// </summary> class BrainFacade原创 2017-12-31 18:10:21 · 351 阅读 · 0 评论 -
C# 设计模式-享元(Flyweight)
使用共享技术支持大量细粒度的对象主要组成: FlywieghtFactory-享元工厂,复制创建和管理享元对象 Flyweight-享元父类或接口 ConcreteFlyweight-具体享元对象相关类:using System;using System.Collections.Generic;namespace Flyweight{ /// <summary> /// 共原创 2018-01-01 21:26:19 · 330 阅读 · 0 评论 -
C# 设计模式-单例(Singleton)
一个类仅有一个实例,并提供访问实例的全局访问点单件类:using System;namespace Singleton{ /// <summary> /// 单件 /// </summary> class SingletonClass { private static SingletonClass instance; //私有构原创 2017-12-26 18:47:10 · 249 阅读 · 0 评论 -
C# 设计模式-原型(Prototype)
用具体原型实例创建具体对象,并通过克隆该原型创建新对象原型和工厂的区别: - 工厂相当于创建新的原型类来获取新对象。 - 原型通过克隆已存在的原型类来获取新对象。抽象原型、具体原型using System;namespace Prototype{ /// <summary> /// 抽象原型父类 /// </summary> abstract class原创 2017-12-25 18:46:47 · 311 阅读 · 0 评论 -
C# 设计模式-代理(Proxy)
为对象提供代理,以控制对该对象的访问。主要组成:Subject-代理和实体的共用类或接口 Proxy-代理 RealSubject-实体适配器与代理的区别:适配器为对象提供一个不同的接口。 代理提供与实体相同的接口。装饰和代理的区别:装饰为对象动态添加额外功能。 代理则控制对象的访问。相关类:using System;namespace Proxy{ /// <summar原创 2018-01-02 18:38:58 · 2883 阅读 · 0 评论 -
C# 设计模式-策略(Strategy)
定义一系列算法,把它们分别封装起来,使得它们可相互替换。最终各个算法可以独立变化。主要组成: Strategy-策略父类或接口 ConcreteStrategy-具体策略,实现不同算法 Context-上下文,客户通过该类对不同策略进行调用状态与策略的区别: 状态:对象内部状态的变化,从而表现为不同的行为,关键在于对象内部。 策略:对象使用不同的策略达到类似的目的,关键在于对象外原创 2018-01-11 20:30:37 · 253 阅读 · 0 评论 -
C# 设计模式-观察者(Observer)
定义对象间的一种一对多的依赖关系,当目标发生变化时,它的所有观察者得到通知被自动更新。主要组成:Subject-目标ConcreteSubject - 具体目标Observer-观察者ConcreteObserver-具体观察者相关类:using System;using System.Collections.Generic;namespa原创 2018-01-09 18:47:37 · 352 阅读 · 0 评论