java设计模式之模板方法模式
2017-08-01 22:19
330 查看
宋丹丹姐的一个小品,说把大象放入冰箱分为几步骤,三步、第一步:把冰箱门打开,第二步:把大象装进去,第三步:把冰箱门关上。就是这样的一个小品,可以说是其实简化的一个模板方法。把鸡蛋装进冰箱分为几步,同样也是这个道理。
模板方法模式概念:
把一些共同的行为抽象出来,作为父类公共使用,一些具体的步骤延迟到子类来执行。这样就可以不改变算法的基础架构,就可以重新定义算法的某些特定的步骤,达到特定的行为模式。
网上很多例子都是拿喝茶,泡茶,喝咖啡,泡咖啡等来说事情,我也不会例外。喝茶和喝咖啡都是有共同的流程的,比如:烧水,把水倒入杯中,都是共同的方法,共同的行为。所以可以抽象出来,步骤都是一样的。其实就是泡茶和泡咖啡的行为不同,所以抽象出来,具体的子类去重新定义这些算法步骤来实现。
这就是简单的一个设计模式出来了,重在积累学习,有时间就要学点知识,看会,和自己实际写又是两把事情。
模板方法还有一些设计场景,自己根据业务场景,尽量重构出来,自己试试看看自己写过的代码是否可以这样抽取出来。
模板方法模式概念:
把一些共同的行为抽象出来,作为父类公共使用,一些具体的步骤延迟到子类来执行。这样就可以不改变算法的基础架构,就可以重新定义算法的某些特定的步骤,达到特定的行为模式。
网上很多例子都是拿喝茶,泡茶,喝咖啡,泡咖啡等来说事情,我也不会例外。喝茶和喝咖啡都是有共同的流程的,比如:烧水,把水倒入杯中,都是共同的方法,共同的行为。所以可以抽象出来,步骤都是一样的。其实就是泡茶和泡咖啡的行为不同,所以抽象出来,具体的子类去重新定义这些算法步骤来实现。
package com.design.test1; /** * Created by sdc on 2017/8/1. */ public abstract class AbstractCookingAction { /** * 喝....... */ public final void cooking() { //步骤1:煮水 boilWater(); //步骤2:倒水 pourWater(); //步骤3:如果没人加东西,则就是喝白开水了。 if(ifOrNotAddBatching()) { addBatching(); } //步骤4: make(); } //制作饮料 protected abstract void make(); //加入配料 protected abstract void addBatching(); //煮水 private void boilWater() { System.out.print("把水煮开......."); } //把水倒入杯中 private void pourWater() { System.out.print("把水倒入杯中......."); } /** * 是否加入配料,比如咖啡,奶茶,有人加柠檬等 * @return */ protected boolean ifOrNotAddBatching() { // 默认设置 return true; } }
package com.design.test1; /** * Created by sdc on 2017/8/1. */ public class TeaCooking extends AbstractCookingAction { @Override protected void make() { System.out.print("制作茶....."); } @Override protected void addBatching() { System.out.print("加入配料"); } }
package com.design.test1; /** * Created by sdc on 2017/8/1. */ public class CoffeeCooking extends AbstractCookingAction { @Override protected void make() { System.out.print("制作咖啡....."); } @Override protected void addBatching() { System.out.print("加入糖"); } }
这就是简单的一个设计模式出来了,重在积累学习,有时间就要学点知识,看会,和自己实际写又是两把事情。
模板方法还有一些设计场景,自己根据业务场景,尽量重构出来,自己试试看看自己写过的代码是否可以这样抽取出来。
相关文章推荐
- java_23种设计模式之模板方法模式
- Java设计模式之模板方法模式
- java设计模式---Template Method模板方法---实际处理交给子类
- Java设计模式七:模板方法(Template Method)
- Java设计模式:模板方法模式
- Java设计模式—模板方法(Template Method)
- java设计模式---模板方法模式
- java设计模式---模板方法模式
- java设计模式——模板方法模式
- Java设计模式之模板方法模式
- Java设计模式之模板方法
- Java模式设计之模板方法模式
- java设计模式---模板方法模式
- Java设计模式之模板方法
- 深入浅出Java模式设计之模板方法模式
- Java设计模式七:模板方法(Template Method)
- Java设计模式透析之 —— 模板方法(Template Method)
- Java设计模式 Design Pattern:模板方法 Template Method
- java设计模式之模板方法模式
- JAVA设计模式——模板方法模式