也是抽象与实现分离,其意图是定义一个模板,然后把具体实现交给子类完成.
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(); }
注意此模式与桥接模式很像,区别在于这里接口传值是是方法里实现的,这样就灵活一些.模板模式也广泛用于抽象类.这个模式其实大家一直在用,具体怎么用,还视具体情况