设计模式-模板模式

设计模式-Design Pattern
  一套反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结
目的:可重用代码、代易懂、可靠性高

GitHub地址:https://github.com/soft-tank/design-pattern

 

模板模式

思想:

  1、一个框架,统一调用

  2、框架中分离出变与不变的部分

  3、变化的部分,延迟实现

思路:

  1、一个抽象类,一个public final 方法

    |--汇总可变和不可变的部分,形成一个模板方法

  2、不需要子类实现的方法用 private 修饰

  3、可变的部分用 protected abstact 修饰 并且不实现

    |--protected:子类可访问即可,不需要全局开放,所以不用public

  4、让子类继承抽象类,实现其未实现的方法

  5、调用测试。

    |-- 父类 实例名 = new 子类(); ---> 实例名.模板方法();

 

代码

抽象类

 1 /**
 2  * 
 3  * 模板模式
 4  * 1.一个框架,统一调用
 5  * 2.框架中包含可变和不变的部分
 6  * 3.可变的部分 延迟实现
 7  * 
 8  * @author coffee
 9  *
10  */
11 public abstract class AbstactTemplate {
12 
13     //模板方法,汇总可变和不变的部分,final定义
14     public final void execute(){
15         //加载数据之前
16         beforeLoad();
17         //加载数据
18         load();
19         //加载数据之后
20         afterLoad();
21     }
22     
23     protected abstract void beforeLoad();
24     
25     private void load(){
26         System.out.println("正在加载....");
27     }
28     
29     protected abstract void afterLoad();
30     
31 }

 

子类实现

 1 /**
 2  * 
 3  * 实现父类未实现的部分,套用模板
 4  * 
 5  * @author coffee
 6  *
 7  */
 8 public class Template extends AbstractTemplate{
 9 
10     @Override
11     protected void beforeLoad() {
12         System.out.println("加载数据前...");
13     }
14 
15     @Override
16     protected void afterLoad() {
17         System.out.println("加载数据后...");
18     }
19 }

测试

1     @Test
2     public void test() {
3         AbstractTemplate template = new Template();
4         template.execute();
5     }

 如有理解不当或建议,欢迎指正

posted @ 2018-04-04 11:55  不放糖的咖啡  阅读(110)  评论(0编辑  收藏  举报