设计模式之模版方法
定义算法的骨架,将具体操作放在子类去实现。例:去银行取钱的操作。
1.去哪个银行?
2.取多少钱?
代码实例:
//抽象类 取钱
public abstract class GetMoney{
//去哪里取钱
protected abstract void go();
//取钱的动作
protected abstract void doGet();
//最后调用 ps:之所以声明成final主要是让子类不能否重写此方法
public final void doGetMoney(){
this.go();
this.doGet();
}
}
//实现类
public class GetMoneyImpl extends GetMoney{
protected abstract void go(){
System.out.print("去建设银行");
}
//取钱的动作
protected abstract void doGet(){
System.out.print("取款200元");
}
}
//调用类 代码入口
public class MainCLass extends GetMoney{
public static void main(String[] args){
GetMoney getMoney = new GetMoneyImpl();
getMoney.doGetMoney();
}
}
模版方法的优缺点:
优点:
(1)具体实现步骤定义在子类中,子类定义详细处理算法是不会改变算法整体结构的。
(2)代码复用的基本技术,在数据库设计中尤为重要。
(3)存在一种反向的控制结构,通过一个父类调用其子类的操作,通过子类对父类进行扩展增加新的行为,符合“开闭原则”。
缺点:
(1)每一个不同的操作都会对应一个实现类,导致系统更加的庞大。