设计模式-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 }
如有理解不当或建议,欢迎指正