admin 管理员组文章数量: 1086019
【设计模式
模板方法
- 一、定义
- 二、类图
- 三、代码
- 抽象模板类
- 具体模板类
- 场景类
- 结果:
- 四、优缺点
- 优点:
- 缺点:
一、定义
模板方法模式的核心设计思路,是通过在抽象类中定义抽象方法的执行顺序,并将抽象方法设定为只有子类实现,
但不设计独⽴立访问的方法。简单说也就是把你安排的明明白白的。
二、类图
- 模板方法(templateMethod): 抽取子类公共逻辑,并定义子类调用顺序
- 基本方法(doSomething/doAnything): 子类独有的具体实现逻辑
三、代码
抽象模板类
public abstract class AbstractClass {//基本方法protected abstract void doSomething();//基本方法protected abstract void doAnything();//模板方法 抽取子类公共逻辑public void templateMethod(){System.out.println("实现子类公共逻辑");doSomething();doAnything();}}
具体模板类
public class ConcreteLogicOne extends AbstractClass {@Overrideprotected void doSomething() {System.out.println("ConcreteLogicOne逻辑处理1");}@Overrideprotected void doAnything() {System.out.println("ConcreteLogicOne逻辑处理2");}
}
public class ConcreteLogicTwo extends AbstractClass {@Overrideprotected void doSomething() {System.out.println("ConcreteLogicTwo逻辑处理1");}@Overrideprotected void doAnything() {System.out.println("ConcreteLogicTwo逻辑处理2");}
}
场景类
public class testController {public static void main(String[] args) {AbstractClass concreteLogicOne = new ConcreteLogicOne();concreteLogicOne.templateMethod();ConcreteLogicTwo concreteLogicTwo = new ConcreteLogicTwo();concreteLogicTwo.templateMethod();}
}
结果:
四、优缺点
优点:
- 封装不变部分,扩展可变部分,提高扩展性
- 提取公共部分代码,便于维护,提高复用性
- 行为由父类控制,子类实现,符合开闭原则
缺点:
- 抽象类继承缺点,父类增加了方法,子类需要都实现
- 子类影响父类,子类返回数据到父类,父类进行逻辑处理。子类间接影响了父类结果,提高了阅读代码复杂度
- 每实现具体逻辑都需要增加子类,导致类数量增加,提高了系统复杂性
本文标签: 设计模式
版权声明:本文标题:【设计模式 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1697228404a263868.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论