1. 模版方法模式:将多个对象相同的算法抽象,泛化出来,形成超类,由这个超类维护相同的算法骨架,而子类实现具体的算法。
一个简单的例子:
package src.TemplateMethod; /** * 模版方法:封装算法 * 模版方法在一个方法中定义了算法的骨架,而将一些步骤延迟到子类中去具体完成。 * 模版方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。 */ public abstract class CaffeineBeverage { final void prepareRecipe() { boilWater(); brew(); pourInCup(); addCondiments(); return; } void boilWater() { System.out.println("boiling water!"); } void pourInCup() { System.out.println("pour into cup!"); } abstract void brew(); abstract void addCondiments(); } public class Tea extends CaffeineBeverage { @Override void brew() { System.out.println("Steeping the tea"); } @Override void addCondiments() { System.out.println("Adding Lemon"); } } public class Coffee extends CaffeineBeverage { @Override void brew() { System.out.println("Dripping the coffee through filter"); } @Override void addCondiments() { System.out.println("Adding sugar and milk"); } }
模版方法模式在很多框架中都很常见:由框架去控制如何做事情,而由你(框架的使用者)去指定框架算法中的每个步骤的细节。
2.迭代器与组合模式:管理良好的集合