代码改变世界

模板模式

2010-08-26 22:19  Clingingboy  阅读(1073)  评论(0编辑  收藏  举报

   也是抽象与实现分离,其意图是定义一个模板,然后把具体实现交给子类完成.

image_2

1.接口

interface IPrimitives {
   string Operation1();
     string Operation2();
 }

2.实现

class ClassA : IPrimitives {
   public string Operation1() {
     return "ClassA:Op1 ";
   }
   public string Operation2() {
     return "ClassA:Op2 ";
   }
 }
 
 class ClassB : IPrimitives {
   public string Operation1() {
     return "ClassB:Op1 ";
   }
   public string Operation2() {
     return "ClassB.Op2 ";
   }
 }

3.调用

class Algorithm {
   public void TemplateMethod(IPrimitives a) {
       string s = 
         a.Operation1() +
         a.Operation2();
        Console.WriteLine(s);
   }
 }

4.客户端调用

static void Main() {
   Algorithm m = new Algorithm();
        
   m.TemplateMethod(new ClassA());
   m.TemplateMethod(new ClassB());
   Console.ReadKey();
 }

注意此模式与桥接模式很像,区别在于这里接口传值是是方法里实现的,这样就灵活一些.模板模式也广泛用于抽象类.这个模式其实大家一直在用,具体怎么用,还视具体情况