GoF23-外观(Decorator)模式(门面模式)
目标之一:提高程序的可复用性
设计模式三连
有哪些功能可以被扩展?
扩展功能时必须修改哪些地方?
有哪些类不需要修改?
简介
外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
模拟代码
public class FacadePattern {
public static void main(String[] args) {
Phone phone = new Phone();
phone.playApp();
}
}
class Phone {
private App1 app1 = new App1();
private App2 app2 = new App2();
private App3 app3 = new App3();
public void playApp() {
app1.PlaySong();
app2.PlayMovie();
app3.LookBook();
}
}
class App1 {
public void PlaySong() {
System.out.println("播放轻音乐~");
}
}
class App2 {
public void PlayMovie() {
System.out.println("播放歌曲~");
}
}
class App3 {
public void LookBook() {
System.out.println("看书~");
}
}
运行结果
播放轻音乐~
播放歌曲~
看书~