今天我们介绍一个比较好理解的模式------------外观模式
当你需要设计下面这么多类的时候:
我们可以给这个系统设计一个外观:
外观类:
public class HomeTheaterFacade { Amplifier amp; Tuner tuner; DvdPlayer dvd; CdPlayer cd; Projectpr projectpr; TheaterLights lights; Screen screen; PopcornPopper popper; public HomeTheaterFacade (Amplifier amp,Tuner tuner,DvdPlayer dvd,CdPlayer cd,Projectpr projectpr,TheaterLights lights,Screen screen,PopcornPopper popper) { this.amp = amp; this.tuner = tuner; this.dvd = dvd; this.cd = cd; this.projectpr = projectpr; this.lights = lights; this.screen = screen; this.popper = popper; } public void watchMovie(String movie) { System.out.println("Get ready to watch a movie"); popper.on(); popper.pop(); lights.dim(); screen.dowm(); projectpr.on(); amp.on(); dvd.on(); } }外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
外观模式类图:
总结:
1:当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观。
2:外观将客户从一个复杂的子系统中解耦。
3:实现一个外观,需要将子系统组合进外观中,然后讲工作委托给子系统执行。
4:你可以为一个子系统实现一个以上的外观。