template pattern 即模板模式 核心思想:产品不变的部分首先实现,将易变的部分抽象出来供子类完成。
例如:一双运动鞋大体制作流程各厂家基本一致,但是各环节实现细节可有些不一样,不一样的部分抽象出来让不同厂家实现。即先有个框架,细节交给不同厂家实现
编程实例:赵本山小品中提到的将大象装进冰箱分几步:
1,,把冰箱门打开
2,把大象放进去
3,把冰箱门关上
这是是该问题的主要解决步骤,而细节的描述因人而异
代码如下:
public interface ObjectLoader {
public void loadObject();
public void process();
public void cleanUp();
}
public abstract class AbstractLoadObject implements ObjectLoader{
@Override
public abstract void loadObject();
@Override
public void process() {
// TODO Auto-generated method stub
this.loadObject();
this.cleanUp();
}
@Override
public abstract void cleanUp();
}
public abstract class ElephantLoader extends AbstractLoadObject{
@Override
public void loadObject() {
// TODO Auto-generated method stub
openFidge();
fillinElephant();
}
@Override
public void cleanUp() {
// TODO Auto-generated method stub
closeFridge();
}
@Override
public void process() {
// TODO Auto-generated method stub
findFridge();
fillinElephant();
super.process();
}
public void findElephant(){
trace("找到一头大象");
}
public void findFridge(){
trace("找到一个冰箱");
}
protected void trace(String string) {
// TODO Auto-generated method stub
System.out.println(string);
}
public abstract void openFidge();
public abstract void fillinElephant();
public abstract void closeFridge();
}
public class ElephantLoaderImp extends ElephantLoader {
@Override
public void openFidge() {
// TODO Auto-generated method stub
trace("打开冰箱门");
}
@Override
public void fillinElephant() {
// TODO Auto-generated method stub
trace("装入冰箱");
}
@Override
public void closeFridge() {
// TODO Auto-generated method stub
trace("关闭冰箱门");
}
}