模板方法的模式,我自己的理解就是抽取基类的一个过程。比如说现在要生产一批汽车,我们只要造出一个汽车的模型就可以造其他的汽车。在Android中向Base类的抽取等。具体下图
大体分为以下几步:
1.找到类的公共方法,抽取抽象类。
2.继承抽象类,执行自己的方法。
3.如果有公共的方法,可以写在抽象类中。
一.抽取汽车的公共方法
public abstract class BaseCar {
/**
* 启动方法
*/
protected abstract void start();
/**
* 暂停
*/
protected abstract void stop();
/**
* 车辆的喇叭
*/
protected abstract void alarm();
/**
* 让汽车运行起来
*/
public void run() {
this.start();
this.alarm();
this.stop();
}
}
二.实现抽象类的方法
汽车一:
public class Car1 extends BaseCar {
private final String TAG = "Car1";
@Override
protected void start() {
Log.e(TAG, "启动");
}
@Override
protected void stop() {
Log.e(TAG, "停止");
}
@Override
protected void alarm() {
Log.e(TAG, "鸣笛");
}
}
汽车二:
public class Car2 extends BaseCar {
private final String TAG = "Car2";
@Override
protected void start() {
Log.e(TAG, "启动");
}
@Override
protected void stop() {
Log.e(TAG, "启动");
}
@Override
protected void alarm() {
Log.e(TAG, "启动");
}
}
三.如果有重复的,写在抽象类中
/**
* 让汽车运行起来
*/
public void run() {
this.start();
this.alarm();
this.stop();
}
这段代码在抽象类中,直接调用本类对象就可以。
四.总结
模板方法优点:
1.提取公共部分代码,便于维护
2.基本方法是由子类实现的,子类可以通过扩展的方式增加功能。
模板方法缺点:
抽象类,实现最基本的抽象方法,在复杂的项目中可能,看起来比较有难度。