很简单的一种设计模式,直接举例吧
平时做饭炒菜,都是按照一定的顺序来做。先倒油,再热油,然后炒菜,放调料,最后炒熟。不管是西红柿炒鸡蛋,还是鱼香肉丝,都是如此。
通常过程的代码:
package com.designmodel.template; public abstract class CookStep { void cookProcess() { pourOil(); heatOil(); pourVegetable(); pourSauce(); fry(); } private void pourOil() { System.out.println("倒油"); } private void heatOil() { System.out.println("热油"); } abstract void pourVegetable(); abstract void pourSauce(); private void fry() { System.out.println("炒熟"); } }
西红柿炒鸡蛋的过程:
package com.designmodel.template; public class CookTomatoWithEgg extends CookStep { @Override void pourVegetable() { System.out.println("倒入鸡蛋和西红柿"); } @Override void pourSauce() { System.out.println("撒咸盐和白糖"); } }
鱼香肉丝的过程:
package com.designmodel.template; public class CookYuXiang extends CookStep { @Override void pourVegetable() { System.out.println("炒肉丝,胡萝卜丝,木耳丝等等"); } @Override void pourSauce() { System.out.println("放咸盐"); } }
客户端:
package com.designmodel.template; public class Client { public static void main(String[] args) { CookTomatoWithEgg c1 = new CookTomatoWithEgg(); c1.cookProcess(); System.out.println("西红柿鸡蛋出锅..."); CookYuXiang c2 = new CookYuXiang(); c2.cookProcess(); System.out.println("鱼香肉丝出锅..."); } }
运行结果:
倒油
热油
倒入鸡蛋和西红柿
撒咸盐和白糖
炒熟
西红柿鸡蛋出锅...
倒油
热油
炒肉丝,胡萝卜丝,木耳丝等等
放咸盐
炒熟
鱼香肉丝出锅...