模板方法很简单,只要有抽象类的地方,都可以看到这个模式:就是在父类中的非抽象方法中调用抽象方法。 基于委托的模板方法:从而具体实现方法可以不依赖于抽象类,达到解耦的目的 几点注意: 1.delegate声明在模板类中 2.在类DoCompA和DoCompB中定义与委托相同的方法 3.在Main()中组装委托链,调用tm.DoComp()意味着这是一个模板方法(非抽象中... Read More
posted @ 2007-10-04 11:43 包建强 Views(473) Comments(0) Diggs(0)
这个模式是对模板方法的简单包装,可以看到,只是多了一个Context类这个包装器。 以上UML图的代码很好实现,关键是Client如何使用Context类: Strategy s = new ConcreteStrategyA(); Context context = new Context(); context.St... Read More
posted @ 2007-10-04 11:42 包建强 Views(553) Comments(0) Diggs(0)
Observer模式的迷人处在于它实现了.NET事件机制,这使得它在OO设计中大放光彩。 定义:观察者模式定义了一种一对多的依赖关系,让多个观察者Observer对象同时监听某一个主题对象Subject。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 逐个分析: 1.Subject是一个集合类,负责将所有的Observer注册到弱集合arr中,这个由Attach... Read More
posted @ 2007-10-04 11:41 包建强 Views(551) Comments(0) Diggs(0)
状态模式是把各种状态封装成不同的类。 关于Context类的实现,不太同于Strategy,虽然原理是一样的: public class Context { private State stateA, stateB, state; public Context() { stateA = new State... Read More
posted @ 2007-10-04 11:41 包建强 Views(402) Comments(0) Diggs(0)