设计模式之模板方法模式
2016-03-11 21:49
337 查看
模板方法模式是定义一套标准的行为规范,比如每个人的周末日常,包括早晨、中午、晚上都有不同的活动,早晨赖床,中午自由活动找乐子,晚上睡觉,而中午自由活动每个人都有不同的兴趣喜好。这样同样是过了一天,每个人的具体行为模式是各有各的不同。将周末日常做成一个抽象类Weekend,早中晚时间为三个方法,晚上的时间都是睡觉,而早上和中午则各有各的安排,定义为抽象方法,强制让子类来实现。最后表现出来的则是都是过了同样的一天周末,而各自找了各自的乐子。
模板方法具体分为两部分:
抽象类:定义模板方法;
具体类:实现自己的业务逻辑。
根据上面的例子,完成模板方法模式的实例。
周末抽象类Weekend:
public abstract class Weekend {
public void everyDay() {
morning();
entertainment();
night();
}
public abstract void morning();
public abstract void entertainment();
public void night() {
System.out.println("睡觉。");
}
}男孩的周末日常:
public class BoysWeekend extends Weekend {
@Override
public void morning() {
System.out.println("赖床睡觉。");
}
@Override
public void entertainment() {
System.out.println("逛街看漂亮妹子、看片、玩游戏。");
}
}女孩的周末日常:
public class GirlsWeekend extends Weekend {
@Override
public void morning() {
System.out.println("就是躺在床上不起来。");
}
@Override
public void entertainment() {
System.out.println("做头发、做面膜、美甲、看韩剧。");
}
}测试:
public class Main {
public static void main(String[] args) {
System.out.println("男孩的周末日常:");
Weekend boysDaily = new BoysWeekend();
boysDaily.everyDay();
System.out.println("------------------------");
System.out.println("女孩的周末日常:");
Weekend girlsDaily = new GirlsWeekend();
girlsDaily.everyDay();
}
}输出:
男孩的周末日常:
赖床睡觉。
逛街看漂亮妹子、看片、玩游戏。
睡觉。
------------------------
女孩的周末日常:
就是躺在床上不起来。
做头发、做面膜、美甲、看韩剧。
睡觉。
总结:模板方法模式的优点在于:可以将共同的业务逻辑放在基类来实现,省去了很多重复的代码,并且不同的子类可以实现自己特有的业务规则。缺点在于对于不同的实现,都需要定义一个子类,使得这个设计比较抽象和凌乱。
模板方法具体分为两部分:
抽象类:定义模板方法;
具体类:实现自己的业务逻辑。
根据上面的例子,完成模板方法模式的实例。
周末抽象类Weekend:
public abstract class Weekend {
public void everyDay() {
morning();
entertainment();
night();
}
public abstract void morning();
public abstract void entertainment();
public void night() {
System.out.println("睡觉。");
}
}男孩的周末日常:
public class BoysWeekend extends Weekend {
@Override
public void morning() {
System.out.println("赖床睡觉。");
}
@Override
public void entertainment() {
System.out.println("逛街看漂亮妹子、看片、玩游戏。");
}
}女孩的周末日常:
public class GirlsWeekend extends Weekend {
@Override
public void morning() {
System.out.println("就是躺在床上不起来。");
}
@Override
public void entertainment() {
System.out.println("做头发、做面膜、美甲、看韩剧。");
}
}测试:
public class Main {
public static void main(String[] args) {
System.out.println("男孩的周末日常:");
Weekend boysDaily = new BoysWeekend();
boysDaily.everyDay();
System.out.println("------------------------");
System.out.println("女孩的周末日常:");
Weekend girlsDaily = new GirlsWeekend();
girlsDaily.everyDay();
}
}输出:
男孩的周末日常:
赖床睡觉。
逛街看漂亮妹子、看片、玩游戏。
睡觉。
------------------------
女孩的周末日常:
就是躺在床上不起来。
做头发、做面膜、美甲、看韩剧。
睡觉。
总结:模板方法模式的优点在于:可以将共同的业务逻辑放在基类来实现,省去了很多重复的代码,并且不同的子类可以实现自己特有的业务规则。缺点在于对于不同的实现,都需要定义一个子类,使得这个设计比较抽象和凌乱。
相关文章推荐
- Android Native 绘图方法
- PropertyChangeListener简单理解
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- C#中struct和class的区别详解
- C#编程中使用设计模式中的原型模式的实例讲解
- 使用设计模式中的工厂方法模式进行C#编程的示例讲解
- 实例解析C#设计模式编程中简单工厂模式的使用
- 详解C#设计模式编程中生成器模式的使用
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 深入解析C#设计模式编程中对建造者模式的运用
- C++设计模式编程中的观察者模式使用示例
- 举例解析设计模式中的工厂方法模式在C++编程中的运用
- PHP设计模式之装饰者模式代码实例
- php设计模式之单例模式实例分析