模板方法模式(Template Method)
2017-12-18 15:07
555 查看
定义:
定义一个模板结构,将具体内容延迟到子类去实现。
解决的问题:
提高代码复用性。将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中
实现了反向控制。通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”
uml类图:
模式组成:
AbstractClass:抽象类。实现了模板方法,定义了算法的骨架
ConcreteClass:具体类。实现抽象类中的抽象方法,已完成完整的算法
优点:
提高代码复用性
将相同部分的代码放在抽象的父类中
提高了拓展性
将不同的代码放入不同的子类中,通过对子类的扩展增加新的行为
实现了反向控制
通过一个父类调用其子类的操作,通过对子类的扩展增加新的行为,实现了反向控制 & 符合“开闭原则”
缺点:
引入了抽象类,每一个不同的实现都需要一个子类来实现,导致类的个数增加,从而增加了系统实现的复杂度
举个栗子:
定义抽象角色
定义具体实现
定义具体实现
客户端调用
输出
定义一个模板结构,将具体内容延迟到子类去实现。
解决的问题:
提高代码复用性。将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中
实现了反向控制。通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”
uml类图:
模式组成:
AbstractClass:抽象类。实现了模板方法,定义了算法的骨架
ConcreteClass:具体类。实现抽象类中的抽象方法,已完成完整的算法
优点:
提高代码复用性
将相同部分的代码放在抽象的父类中
提高了拓展性
将不同的代码放入不同的子类中,通过对子类的扩展增加新的行为
实现了反向控制
通过一个父类调用其子类的操作,通过对子类的扩展增加新的行为,实现了反向控制 & 符合“开闭原则”
缺点:
引入了抽象类,每一个不同的实现都需要一个子类来实现,导致类的个数增加,从而增加了系统实现的复杂度
举个栗子:
定义抽象角色
abstract class AbstractPerson { public void prepareGotoSchool() { dressup(); eatBreakfast(); takeThings(); } void dressup() { System.out.println("穿衣洗漱"); } protected abstract void eatBreakfast(); protected abstract void takeThings(); }
定义具体实现
class Student extends AbstractPerson { @Override protected void eatBreakfast() { System.out.println("吃妈妈做好的早餐"); } @Override protected void takeThings() { System.out.println("背书包,带好作业去学校"); } }
定义具体实现
class Teacher extends AbstractPerson { @Override protected void eatBreakfast() { System.out.println("做早饭,并照顾孩子吃早饭"); } @Override protected void takeThings() { System.out.println("带上昨晚准备的试卷"); } }
客户端调用
public static void main(String[] args) { Student s = new Student(); Teacher t = new Teacher(); s.prepareGotoSchool(); System.out.println("============="); t.prepareGotoSchool(); }
输出
相关文章推荐
- 模板方法模式(Template Method)
- 设计模式之Template Method模式(模板方法模式)
- Java设计模式透析之 —— 模板方法(Template Method)
- JAVA设计模式(17):行为型-模板方法模式(Template Method)
- JAVA设计模式(17):行为型-模板方法模式(Template Method)
- 极速理解设计模式系列:20.模板方法模式(Template Method Pattern)
- Java设计模式透析之 —— 模板方法(Template Method)
- 模板方法模式(Template Method Pattern)——封装算法
- [设计模式笔记]三. 行为型模式--24. Template Method模式(模板方法)类行为型模式(一)
- Template Method模板方法模式
- 行为设计模式---模板方法模式(Template Method)
- 设计模式介绍:模板方法(Template Method)模式
- 模板方法模式(Template method)
- 我所理解的设计模式(C++实现)——模板方法模式(Template Method Pattern)
- Java设计模式透析之 —— 模板方法(Template Method)
- 设计模式(14)-模板方法模式(Template Method)
- 模板方法模式(Template Method)
- 【设计模式基础】行为模式 - 6 - 模板方法(Template Method)
- Java设计模式透析之 —— 模板方法(Template Method)
- 模板方法模式(Template Method)