当要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法模式来处理。
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
abstract class AbstractClass{ //模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作 public void TemplateMethod() { PRimitiveOperation1(); PrimitiveOperation2(); } //一些抽象行为,放到子类去实现 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2();}class ConcreteClassA : AbstractClass{ public override void PrimitiveOperation1() { 具体实现;} public override void PrimitiveOperation2() { 具体实现;}}class ConcreteClassB : AbstractClass{ public override void PrimitiveOperation1() { 具体实现;} public override void PrimitiveOperation2() { 具体实现;}}main(){ AbstractClass c; c = new ConcreteClassA(); c.TemplateMethod(); c = new ConcreteClassB(); c.TemplateMethod();}模板方法模式通过把不变的行为移动到超类,去除子类中的重复代码来体现其优势。
模板方法模式提供了一个很好的代码复用平台。
当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。
通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
新闻热点
疑难解答