名称: 模板方法
说说:会做的题先做,不会做的题我先不做,让以后我儿子来做
动机:
适用性:
参与者:
结果:在一个方法中定义一个算法的骨架,一些步骤延迟到子类中实现
实现:
说明:多组相似的行为,实现过程中,步骤实现相同的在父类就可以实现,不相同或不确定相同的留给子类去实现。
demo c#:
namespace templateMethod {
class Program {
static void Main(string[] args) {
var c1 = new context1();
c1.modifyString();
c1.printString();
c1.showStringLength();
var c2 = new context2();
c2.modifyString();
c2.printString();
c2.showStringLength();
Console.Read();
}
}
// main code
abstract class aTemplate { // 定义模板
protected string content = "hello ";
public abstract void modifyString();
public void printString() {
Console.WriteLine("this string is '" + this.content + "'");
}
public void showStringLength() {
Console.WriteLine("this string'length is " + this.content.Length);
}
}
class context1 : aTemplate {
public override void modifyString() {
this.content += "abcdefg";
}
}
class context2 : aTemplate {
public override void modifyString() {
this.content = "asdfghjkl";
}
}
}