行为型——模板方法模式(TemplateMethod)
定义:一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法的结构图
解析:
AbstractClass是抽象类(抽象模板),定义并实现了一个模板方法。
ConcreteClass,实现父类所定义的一个或多个抽象方法。
小时候学习英语的时候重复写的最多的就是英文单词,一个单元,每个单词写N边。课本上的单词拼写就是我们的榜样(模板),学生们需要“复制”下来,每个人不一定复制的是一样的(对的错的)
部分代码理解解析
AbstracClass抽象类
加粗样式
abstract class AbstractClass
{
//部分抽象行为放到子类中实现
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();
//模板方法给出了一些逻辑的骨架,而逻辑的组成是一些响应的抽象操作,它们推迟到子类实现
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}
ConcreClass子类
class ConcreteClassA:AbstractClass //继承父类AbstractClass
{
//与ConcreteClassB、C、D不同的方法实现,后边代码同
public override void PrimitiveOperation1()
{
Console.WriteLine("具体类A方法1实现");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("具体类A方法2实现");
}
}
使用范围
当一个过程需要一个流程做完的时候,这个过程从高层上看是相同的,但是在一些步骤上的实现可能不同,这时候就可以那么模范方法模式来了。当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们通过模板方法把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不可变行为的纠缠。
特点
1.模板方法是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
2.提供了一个和那后的代码复用平台
感谢大家的阅读,有什么问题欢迎留言交流。