【设计模式】考题 -- 模板方法模式
一,概述
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构既可以重定义该算法的某些特定步骤
核心思想:抽象类的方法推迟到子类实现。基类示例指向子类实现
二,示例
老师出考题,学生抄题,然后答题。
1)第一种实现方式
缺点:学生每次都要抄题,而且每个学生类都要重复同样的代码。容易抄错题、难更改。
2)提炼之后的代码
改进之处:让老师印制多份试卷,避免让同学抄卷子出错。(不用每个同学都抄题)
让试卷为基类,学生只需要继承,然后将试题显示,然后标注答案就可以。
3)利用模板方法模式
改进:深度泛化。其实每个学生真正的不同之处就是,答案不同,所以只需要学生提供答案就可以。而试题和填写答案的方法就写到抽象类里。
重点:TestPaper *studentA = new TestPaperA(); //父类对象 用子类实现
studentA->TestQuestion1(); //父类对象调用,所用到的虚函数调用子类已经实现好的
三,通用范例(C#)