行为型模式:23-模板方法模式
2021-06-26 本文已影响0人
综合楼
image.png模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模
式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式包含如下两个角色:
-
AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基
本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中
可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(Template Method),用于
定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽
象类的子类中实现的基本方法,还可以调用其他对象中的方法。 -
ConcreteClass(具体子类):它是抽象类的子类,用于实现在父类中声明的抽象基本操作
以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。
abstract class DBOperator {
public abstract void connDB();
public void openDB() {
System.out.println("打开数据库");
}
public void useDB() {
System.out.println("使用数据库");
}
public void closeDB() {
System.out.println("关闭数据库");
}
public void process() {
connDB();
openDB();
useDB();
closeDB();
}
}
-----------------------------------------------------------------------------------
class DBOperatorSubA extends DBOperator {
public void connDB() {
System.out.println("使用JDBC-ODBC桥接连接数据库");
}
}
-----------------------------------------------------------------------------------
class DBOperatorSubB extends DBOperator {
public void connDB() {
System.out.println("使用连接池连接数据库");
}
}
-----------------------------------------------------------------------------------
class Client {
public static void main(String a[]) {
DBOperator db1;
db1 = new DBOperatorSubA();
db1.process();
System.out.println("---------------------------------------");
db1 = new DBOperatorSubB();
db1.process();
}
}
image.png