模板模式
一个抽象类公开定义了执行方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
- 优点:
- 封装不变部分,扩展可变部分。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
- 缺点:
- 每个不同实现都需要一个子类来实现。
//游戏模板类
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 {@Overridevoid initialize() {System.out.println("准备足球");}@Overridevoid startPlay() {System.out.println("踢足球");}@Overridevoid endPlay() {System.out.println("收拾足球");}
}
//篮球游戏
public class Basketball extends Game {@Overridevoid initialize() {System.out.println("准备篮球");}@Overridevoid startPlay() {System.out.println("打篮球");}@Overridevoid 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(); }
}