苏州建设工程质量监督站网站,电商旅游网站策划书,企业查询免费网站,百度关键词优化首选667seo文章目录 模板方法设计模式模板方法的设计原则模板方法设计模式组成部分代码实现抽象类实现具体实现类执行 模板方法设计模式
模版方法设计模式#xff08;Template Method Pattern#xff09;是一种行为设计模式#xff0c;它定义了一个操作中的算法骨架#xff0c;而将一… 文章目录 模板方法设计模式模板方法的设计原则模板方法设计模式组成部分代码实现抽象类实现具体实现类执行 模板方法设计模式
模版方法设计模式Template Method Pattern是一种行为设计模式它定义了一个操作中的算法骨架而将一些步骤延迟到子类中。模版方法使得子类可以不改变算法结构的情况下重新定义算法中的某些步骤。 这种设计模式的主要目的是让某些方法的具体实现推迟到子类中去完成提供一种代码复用的机制。
模板方法的设计原则
1.单一职责一个类和方法只做一件事。 2.开闭原则对修改关闭对扩展开发。 3.里氏替换原则子类可扩展新方法但不可修改父类已有方法父类已提供了具体实现的方法。 4.依赖倒置依赖于抽象而非具体实现即面向接口编程如方法参数类属性使用接口声明这样可接收任何子类。 5.接口隔离使用多个隔离的接口定义抽象降低耦合。 6.最少知道/迪米特原则降低类之间的依赖聚合组合等。
模板方法设计模式组成部分 抽象类Abstract Class 包含了模版方法及其所需的基本操作方法。 模版方法定义了算法的骨架通常是由一些基本操作方法组成的步骤。 基本操作方法可以是抽象的需要子类实现或具体的提供默认实现。 具体子类Concrete Class 实现了抽象类中的基本操作方法。 通过重写基本操作方法子类可以定制算法的某些步骤。
代码实现
抽象类实现
// 抽象类定义了制作饮料的算法骨架
abstract class Beverage {// 模版方法定义了制作饮料的步骤public final void prepareRecipe() {boilWater();brew();pourInCup();addCondiments();}// 基本操作方法protected abstract void brew(); // 子类实现protected abstract void addCondiments(); // 子类实现private void boilWater() {System.out.println(Boiling water);}private void pourInCup() {System.out.println(Pouring into cup);}
}
具体实现类
// 具体子类具体实现制作茶的步骤
class Tea extends Beverage {Overrideprotected void brew() {System.out.println(Steeping the tea);}Overrideprotected void addCondiments() {System.out.println(Adding lemon);}
}// 具体子类具体实现制作咖啡的步骤
class Coffee extends Beverage {Overrideprotected void brew() {System.out.println(Dripping coffee through filter);}Overrideprotected void addCondiments() {System.out.println(Adding sugar and milk);}
}执行
// 客户端代码
public class TemplateMethodPatternDemo {public static void main(String[] args) {Beverage tea new Tea();tea.prepareRecipe();Beverage coffee new Coffee();coffee.prepareRecipe();}
}