声明:文章内容根据大牛博客的内容,自己理解后,给自己做的学习笔记,文末会附上大牛博客地址链接。有需要沟通交流的可加我QQ群:425120333
模板方法模式是中在框架搭建过程中经常使用的一种设计模式,他声明了需要子类自己去实现的抽象方法,并且已经定义好了具体的调用逻辑,
对于子类来说,只要根据自己的需求实现抽象方法中的功能即可。
public class ShipClient {
public static void main(String[] args) {
//生成木船
ShipBuilding woodenShip = new WoodenShip();
woodenShip.assembly();
System.out.println("-------------分隔符-------------");
//生成铁船
ShipBuilding ironShip = new IronShip();
ironShip.assembly();
}
}
abstract class ShipBuilding {
//获取材料
abstract void getMaterial();
//建造船身
abstract void makeHull();
//安装动力系统
abstract void havePower();
//组装
public void assembly() {
getMaterial();
makeHull();
havePower();
}
}
class WoodenShip extends ShipBuilding {
@Override
void getMaterial() {
System.out.println("木船---获取到足够的木材");
}
@Override
void makeHull() {
System.out.println("木船---建造单层的船身");
}
@Override
void havePower() {
System.out.println("木船---制造划桨");
}
}
class IronShip extends ShipBuilding {
@Override
void getMaterial() {
System.out.println("铁船---获取到足够的铁板");
}
@Override
void makeHull() {
System.out.println("铁船---建造双层的船身");
}
@Override
void havePower() {
System.out.println("铁船---安装发动机");
}
}
控制台输出:
木船—获取到足够的木材
木船—建造单层的船身
木船—制造划桨
————-分隔符————-
铁船—获取到足够的铁板
铁船—建造双层的船身
铁船—安装发动机
这个例子简单演示了模板方法模式的使用,在抽象类中有个组装的过程,这是不变的,所以不用子类是实现,已经定义好了。子类各自实现抽象方法,
最终都通过调用这个模板方法实现整个过程的串联。
参考大牛链接:http://www.cnblogs.com/zuoxiaolong/p/pattern10.html