设计模式:外观模式(Facade)
生活随笔
收集整理的這篇文章主要介紹了
设计模式:外观模式(Facade)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? 外觀模式(Facade)也叫過程模式, 外觀模式為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
? ? 外觀模式通過定義一個一致的接口,用以屏蔽內部子系統的細節,使得調用端只需跟這個接口發生調用,而無需關心這個子系統的內部細節。
??
? 外觀類(Facade): 為調用端提供統一的調用接口,外觀類知道哪些子系統負責處理請求,從而將調用端的請求代理給適當的子系統對象。
? 子系統的集合: 指模塊或子系統,處理Facade對象指派的任務,他是功能的實際提供者。
?
? 外觀模式在MyBatis框架中的應用:MyBatis中的Configuration去創建MetaObject對象使用到外觀模式。
?
用外觀模式模擬一個電影院
public class DVDPlayer {private static DVDPlayer instance = new DVDPlayer();private DVDPlayer(){}public static DVDPlayer getInstance(){return instance;}public void play(){System.out.println(" dvd is playing ");}public void on(){System.out.println(" dvd on ");}public void off(){System.out.println(" dvd off ");}public void pause(){System.out.println(" dvd pause ");} }// 爆米花 public class Popcorn {private static Popcorn instance = new Popcorn();private Popcorn(){}public static Popcorn getInstance(){return instance;}public void on(){System.out.println(" Popcorn on ");}public void off(){System.out.println(" Popcorn off ");}public void pop(){System.out.println(" Popcorn is poping ");} }// 投影機 public class Projector {private static Projector instance = new Projector();private Projector(){}public static Projector getInstance(){return instance;}public void on(){System.out.println(" Projector on ");}public void off(){System.out.println(" Projector off ");}public void focus(){System.out.println(" Projector is focus ");} }// 屏幕 public class Screen {private static Screen instance = new Screen();private Screen(){}public static Screen getInstance(){return instance;}public void up(){System.out.println(" Screen up ");}public void down(){System.out.println(" Screen down ");}}// 影院立體聲 public class Stereo {private static Stereo instance = new Stereo();private Stereo(){}public static Stereo getInstance(){return instance;}public void on(){System.out.println(" Stereo on ");}public void off(){System.out.println(" Stereo off ");}public void up(){System.out.println(" Stereo up ");}public void down(){System.out.println(" Stereo down ");} }// 燈光 public class TheaterLight {private static TheaterLight instance = new TheaterLight();private TheaterLight(){}public static TheaterLight getInstance(){return instance;}public void on(){System.out.println(" TheaterLight on ");}public void off(){System.out.println(" TheaterLight off ");}public void dim(){System.out.println(" TheaterLight dim ");}public void bright(){System.out.println(" TheaterLight bright ");} }// 外觀 public class HomeTheaterFacade {private DVDPlayer dvdPlayer;private Popcorn popcorn;private Projector projector;private Screen screen;private Stereo stereo;private TheaterLight theaterLight;public HomeTheaterFacade(){super();this.dvdPlayer = DVDPlayer.getInstance();this.popcorn = Popcorn.getInstance();this.projector = Projector.getInstance();this.screen = Screen.getInstance();this.stereo = Stereo.getInstance();this.theaterLight = TheaterLight.getInstance();}public void read(){popcorn.on();popcorn.pop();screen.down();projector.on();stereo.on();dvdPlayer.on();theaterLight.dim();}public void play(){dvdPlayer.play();}public void pause(){dvdPlayer.pause();}public void end(){popcorn.off();theaterLight.bright();screen.up();projector.off();stereo.off();dvdPlayer.off();} }public class Client {public static void main(String[] args){HomeTheaterFacade facade = new HomeTheaterFacade();facade.read();facade.play();facade.end();} }??
總結
以上是生活随笔為你收集整理的设计模式:外观模式(Facade)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式:组合模式(Composite
- 下一篇: 设计模式:享元模式(Flyweight