享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。 缺点:使得系统更加复杂;使得程序逻辑复杂化。Demo: abstract class Website { public abstract void Use(User user); } c...
分类:
其他好文 时间:
2015-09-09 17:35:37
阅读次数:
137
所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显式定义的构造方法,默认的构造方法就会失效。 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。Demo1: sealed class Singleton { private s...
分类:
其他好文 时间:
2015-09-09 01:07:09
阅读次数:
286
备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据...
分类:
其他好文 时间:
2015-09-09 01:05:54
阅读次数:
222
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。Demo1: abstract class Iterator { public abstract object First(); public abstra...
分类:
其他好文 时间:
2015-09-09 01:01:22
阅读次数:
181
组合模式(Composite),将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。Demo1: abstract class Component { protected string name; publ...
分类:
其他好文 时间:
2015-09-09 01:00:58
阅读次数:
242
适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。 适配器模式有两种类型:类适配器模式和对象适配器模式。 Dat...
分类:
其他好文 时间:
2015-09-08 23:21:00
阅读次数:
141
状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。 消除庞大的条件分支语句。状态模式通过把各种状态转.....
分类:
其他好文 时间:
2015-09-08 23:13:30
阅读次数:
184
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 所有在用简单工厂的地方,都可以考虑用反射技术来去除switch或if,解除分支判断带来的耦合。Demo: interface IUser { void ...
分类:
其他好文 时间:
2015-09-08 18:30:41
阅读次数:
144
观察者模式又叫做发布-订阅(Publish/Subscribe)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 观察者模式所做的工作其实就是解除耦合。让耦合的双方都依赖于抽象,而不是....
分类:
其他好文 时间:
2015-09-08 18:20:02
阅读次数:
141
当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。 模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式就是提.....
分类:
其他好文 时间:
2015-09-08 18:17:25
阅读次数:
203