模式定义
定义一个框架,框架中所有方法按顺序执行。使得子类不改变父类结构。有序的执行这些方法
使用场景
- 有多个子类共有的方法,且逻辑相同
- 重要的、复杂的方法
例子
抽象了一个工作的例子
public abstract class Work {
public Work() {
goToWork();
goOffWork();
sleep();
}
public abstract void goToWork();
public abstract void work();
public abstract void goOffWork();
public abstract void sleep();
}
实现具体的类
public class XiaoDong extends Work{
static final String TAG = XiaoDong.class.getSimpleName();
@Override
public void goToWork() {
Log.d(TAG,"早上8点,去图书馆上班");
}
@Override
public void work() {
Log.d(TAG,"整理图书");
}
@Override
public void goOffWork() {
Log.d(TAG,"下午6点,下班");
}
@Override
public void sleep() {
Log.d(TAG,"晚上10点,睡觉");
}
}
调用以及输出日志:
XiaoDong xiaoDong = new XiaoDong();
D/XiaoDong: 早上8点,去图书馆上班
D/XiaoDong: 下午6点,下班
D/XiaoDong: 晚上10点,睡觉
总结
优点:
- 封装不变部分,扩展可变部分
- 提取公共代码,便于维护
- 行为由父类控制,子类实现
缺点:
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大