您的位置:首页 > 其它

【软考】设计模式-模板方法

2017-04-22 22:19 323 查看
模板方法的主要思想就是把所有相同的功能都写在父类里,需要有变化的方法在父类中写成虚方法,在子类中重写虚方法。所以模板方法提供了一个很好的代码复用平台。

//abstractclass是抽象类,其实也就是一抽象模板,定义并实现了一个模板方法,这个模板方法是一个具体方法,
//他给出了一个顶级逻辑的骨架,而路基的组成步骤在相应的抽象操作中,推迟到子类实现,顶级逻辑也有可能调用一些具体方法。
abstract class AbstractClass
{
public abstract void PrimitiveOperation1(); //一些抽象行为,放到子类去实现。
public abstract void PrimitiveOperation2();
public void TemplateMethod() //模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作。
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}
 //oncreteclass,实现父类所定义的一个或多个抽象方法,每一个abstractclass都可以有任意多个concreteclass与之对应,而每一个concreteclass都可以给出这些抽象方法,
//也即是顶级逻辑的组成步骤)的不同实现,从而使得顶级逻辑的实现各不相同。
class ConcreteClassA:AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具体类A方法1实现");

}
public override void PrimitiveOperation2()
{
Console.WriteLine("具体类A方法2实现");
}
}
class ConcreteClassB:AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具体类B方法1实现");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("具体了B方法2实现");
}
}


主方法调用:

static void Main(string[] args)
{
AbstractClass c;

c = new ConcreteClassA();
c.TemplateMethod();

c = new ConcreteClassB();
c.TemplateMethod();

Console.Read();
}





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: