模板模式
一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
- 优点:
- 封装不变部分,扩展可变部分。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
- 缺点:
- 每个不同实现都需要一个子类来实现。
//游戏模板类
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play(){
//初始化游戏
initialize();
//开始游戏
startPlay();
//结束游戏
endPlay();
}
}
// 足球游戏
public class Football extends Game {
@Override
void initialize() {
System.out.println("准备足球");
}
@Override
void startPlay() {
System.out.println("踢足球");
}
@Override
void endPlay() {
System.out.println("收拾足球");
}
}
//篮球游戏
public class Basketball extends Game {
@Override
void initialize() {
System.out.println("准备篮球");
}
@Override
void startPlay() {
System.out.println("打篮球");
}
@Override
void endPlay() {
System.out.println("收拾篮球");
}
}
//使用示例
public class Demo {
public static void main(String[] args) {
// 足球
Game game1 = new Football();
game1.play();
// 篮球
Game game2 = new Basketball();
game2.play();
}
}