- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 C# 设计模式-访问者(Visitor)
将每个类中的相关操作封装到一个独立的对象(Visitor)中,使得数据和操作进行分离。从而在不改变各元素类的前提下,定义有关这些元素的新操作。主要组成: Visitor-访问者父类,为每个元素声明一个访问操作。 ConcreteVisitor-具体访问者,实现Visitor父类声明的访问操作。 Element-元素父类,定义Accept(接受访问)操作。 ConcreteElement-具体
2018-01-13 19:03:03 365
原创 C# 设计模式-模板方法(Template Method)
定义一个操作中的算法骨架,将某些步骤延迟到子类中实现,使得子类可在不改变算法结构的前提下重定义某些步骤。主要组成:AbstractClass-抽象父类,实现模板方法,定义算法的骨架。 ConcreteClass-具体子类,重定义模板方法中的某些特定步骤。策略与模板方法区别:策略使用委托调用其他类来改变算法。 模板方法使用继承来改变算法的实现。相关类:using System;namespac
2018-01-12 18:11:32 1505
原创 C# 设计模式-策略(Strategy)
定义一系列算法,把它们分别封装起来,使得它们可相互替换。最终各个算法可以独立变化。主要组成: Strategy-策略父类或接口 ConcreteStrategy-具体策略,实现不同算法 Context-上下文,客户通过该类对不同策略进行调用状态与策略的区别: 状态:对象内部状态的变化,从而表现为不同的行为,关键在于对象内部。 策略:对象使用不同的策略达到类似的目的,关键在于对象外
2018-01-11 20:30:37 232
原创 C# 设计模式-状态(State)
允许一个对象在其内部状态改变时改变它的行为。主要组成: Context-环境,上下文,客户主要使用该类 State-状态父类或接口 ConcreteState-具体状态相关类:using System;namespace State{ /// <summary> /// 手机(环境) /// </summary> class TelephoneContext
2018-01-10 18:37:17 741
原创 C# 设计模式-观察者(Observer)
定义对象间的一种一对多的依赖关系,当目标发生变化时,它的所有观察者得到通知被自动更新。主要组成:Subject-目标ConcreteSubject - 具体目标Observer-观察者ConcreteObserver-具体观察者相关类:using System;using System.Collections.Generic;namespa
2018-01-09 18:47:37 328
原创 C# 设计模式-备忘录(Menento)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存该状态。使得该对象可恢复到原先保存的状态。主要组成:Menento-备忘录,存储原发器的内部状态。Originator-原发器,创建备忘录,用于记录内部状态Caretaker-负责人,负责备忘录的管理相关类:using System.Collections.Generic;namespac
2018-01-08 18:32:05 405
原创 C# 设计模式-中介者(Mediator)
用一个中介对象来封装一系列对象的交互,使得各对象不需要显示地相互引用,从而耦合松散。主要组成:Mediator-中介者父类或接口ConcreteMediator-具体中介者Colleague-同事父类ConcreteColleague-具体同事类相关类:using System;using System.Collections.Generic;na
2018-01-07 19:47:34 1081
原创 C# 设计模式-迭代器(Iterator)
提供一种方法顺序访问一个聚合对象中的各个元素,而不暴露该对象的内部表示。主要组成:Aggregate-聚合父类或接口ConcreteAggregate-具体聚合对象Iterator-迭代器父类或接口ConcreteIterator-具体迭代器相关类:using System;using System.Collections.Generic;na
2018-01-06 18:38:15 996
原创 C# 设计模式-解释器(Interpreter)
给定一个语言,定义它文法的一种表示,并定义一个解释器,用于解释该表示。主要组成:AbstractExpression-抽象表达式TerminalExpression-终止符表达式NonterminalExpression-非终止符表达式Context-上下文相关类:using System;namespace Interpreter{
2018-01-05 20:45:10 2106
原创 C# 设计模式-命令(Command)
将一个请求封装为一个对象,达到用不同请求对客户进行参数化。调用者通过某个命令来调用接收者执行相关操作,减弱调用者与接收者的耦合度。主要组成:Command-命令父类或接口ConcreteCommand-具体命令Invoker-调用者Receiver-接收者,执行命令指定的相关操作相关类:using System;namespace Command{
2018-01-04 18:32:00 1954
原创 C# 设计模式-职责链(Chain of Responsibility)
使多个对象都有机会处理请求,将这些对象连成一条链,并沿着该链传递请求,知道有对象处理它为止。主要组成: Handler-处理者父类 ConcreteHandler-具体处理者相关类:using System;namespace ChainofResponsibility{ /// <summary> /// 处理者父类 /// </summary> abstra
2018-01-03 18:47:09 286
原创 C# 设计模式-代理(Proxy)
为对象提供代理,以控制对该对象的访问。主要组成:Subject-代理和实体的共用类或接口 Proxy-代理 RealSubject-实体适配器与代理的区别:适配器为对象提供一个不同的接口。 代理提供与实体相同的接口。装饰和代理的区别:装饰为对象动态添加额外功能。 代理则控制对象的访问。相关类:using System;namespace Proxy{ /// <summar
2018-01-02 18:38:58 2854
原创 C# 设计模式-享元(Flyweight)
使用共享技术支持大量细粒度的对象主要组成: FlywieghtFactory-享元工厂,复制创建和管理享元对象 Flyweight-享元父类或接口 ConcreteFlyweight-具体享元对象相关类:using System;using System.Collections.Generic;namespace Flyweight{ /// <summary> /// 共
2018-01-01 21:26:19 312
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人