设计模式之模板方法模式
2017-06-05 16:03
239 查看
简介
模板模式(Template Pattern),定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。优点:
封装不变部分,扩展可变部分。
提取公共代码,便于维护。
行为由父类控制,子类实现。
缺点:
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
通用类图
例如:悍马汽车有多个不同的型号,每个型号有不同的地方也有相同的地方,这里就可以创建一个抽象的悍马车模型。类图如下:
java方法实现
定义抽象类public abstract class HummerModel { public abstract void start(); public abstract void stop(); public abstract void alarm(); //这里每一辆汽车的使用的方式基本都是相同的,所以可以在该抽象类中实现 public void run(){ //发动汽车 this.start(); //喇叭的声音 this.alarm(); //停止 this.stop(); } }
定义A型号的车
public class HummerA extends HummerModel{ @Override public void start() { System.out.println("悍马A启动"); } @Override public void stop() { System.out.println("悍马A停止"); } @Override public void alarm() { System.out.println("悍马A的喇叭声"); } }
定义B型号的车
public class HummerB extends HummerModel{ @Override public void start() { System.out.println("悍马B启动"); } @Override public void stop() { System.out.println("悍马B停止"); } @Override public void alarm() { System.out.println("悍马B的喇叭声"); } }
场景类
public class Client { public static void main(String[] args){ HummerModel hA = new HummerA(); hA.run(); System.out.println("==============="); HummerModel hB = new HummerB(); hB.run(); } }
相关文章推荐
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式笔记 13. TemplateMethod 模板方法模式(行为型模式)
- 设计模式之模板方法模式(Template Method)
- 设计模式学习之 模板方法模式
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式——模板方法模式(TemplateMethod)
- 深入浅出Java模式设计之模板方法模式
- 设计模式学习日志(14)-TemplateMethod模板方法(行为型模式)
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式系列漫谈之六 - 模板方法模式
- 设计模式笔记(十五) —— 模板方法模式
- 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)
- 设计模式(七)[模板方法(Template Method)模式]
- 第六个设计模式之:模板方法
- 浅析设计模式之模板方法
- 设计模式一模板方法模式(spring)
- 白话设计模式--行为型模式--Template Method模式(模板方法模式)
- 设计模式(1)- 模板方法 Template Method Pattern