设计模式学习二、模板方法模式
2017-11-01 11:29
232 查看
一、什么是模板方法模式
模板设计方式:在一个方法中定义一个算法骨架,而将一些方法的实现放到子类中,这样使在不改变算法结构的情况下,重新定义算法中的一些步骤
ps:什么是模板,简单点说就是一个方法,这个方法定义了一组算法步骤。任何步骤都可以是抽象的,这些抽象的方法由子类来实现。
二、使用场景
多个类有共同的方法步骤,可以将这些共同的方法放在父类中,不同的实现设为抽象方法,由子类实现。
三、模式构成(网上扒的图,,)
四、举个例子
五、补充
1)为了防止模板方法被修改,可以将模板方法设置为final
2)hook的作用:
hook为钩子,它在父类中实现,却没有任何内容,作用是为了方便扩展与补充,如果子类需要一些特定的行为,可以定义hook的内容,如果不需要,完全可以置之不理。
ps:菜鸟一枚,如有不对请大佬指出,谢谢谢谢~~~~
模板设计方式:在一个方法中定义一个算法骨架,而将一些方法的实现放到子类中,这样使在不改变算法结构的情况下,重新定义算法中的一些步骤
ps:什么是模板,简单点说就是一个方法,这个方法定义了一组算法步骤。任何步骤都可以是抽象的,这些抽象的方法由子类来实现。
二、使用场景
多个类有共同的方法步骤,可以将这些共同的方法放在父类中,不同的实现设为抽象方法,由子类实现。
三、模式构成(网上扒的图,,)
四、举个例子
abstract class Make{ /* * 这是模板方法,里面定义了两个抽象的方法, * 这两个方法的实现可以在子类中完成,以此在不破坏算法框架代码 * 结构的情况下,能完成任务 * */ public void makeDrink(){ boil(); addMaterial();//具体的实现放在子类里 addOther();具体的实现放在子类里 close(); hook();//这个等会解释 } public void boil(){ System.out.println("烧水~~~"); } public abstract void addMaterial(); public abstract void addOther(); public void close(){ System.out.println("盖盖子~~~"); } public void hook(){} } //对于抽象方法的具体实现 class MakeCoffee extends Make{ @Override public void addMaterial() { System.out.println("添加咖啡豆"); } @Override public void addOther() { System.out.println("加点糖"); } } //抽象方法的具体实现 class MakeTea extends Make{ @Override public void addMaterial() { System.out.println("添加茶叶"); } @Override public void addOther() { System.out.println("加点柠檬片"); } //稍后解释,为了扩展功能 @Override public void hook() { System.out.println("滤掉茶叶"); } } public class Template1 { public static void main(String args[]){ Make coffee=new MakeCoffee(); Make tea=new MakeTea(); coffee.makeDrink(); tea.makeDrink(); } } 烧水~~~ 添加咖啡豆 加点糖 盖盖子~~~ 烧水~~~ 添加茶叶 加点柠檬片 盖盖子~~~ 滤掉茶叶
五、补充
1)为了防止模板方法被修改,可以将模板方法设置为final
2)hook的作用:
hook为钩子,它在父类中实现,却没有任何内容,作用是为了方便扩展与补充,如果子类需要一些特定的行为,可以定义hook的内容,如果不需要,完全可以置之不理。
ps:菜鸟一枚,如有不对请大佬指出,谢谢谢谢~~~~
相关文章推荐
- 设计模式学习笔记-模板方法
- 设计模式入门学习 模板方法模式
- java 设计模式 学习笔记(9) 模板方法模式
- 设计模式学习笔记(七)之模板方法模式(Template Method)
- 设计模式学习-Template Method(模板方法)
- HeadFirst 设计模式学习笔记8--模板方法模式
- 《Head First 设计模式》学习笔记:模板方法模式
- 模板方法设计模式--学习笔记
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习之 模板方法模式
- 设计模式学习笔记(七)之模板方法模式(Template Method)
- 设计模式学习----模板方法模式
- 设计模式学习-----模板方法模式
- 设计模式学习笔记-模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- 模板方法模式- 设计模式学习
- 拨开“繁”云见天日 -- 学习设计模式模板方法有感
- 设计模式学习之----模板方法模式
- 设计模式学习-Template Method(模板方法)