外观模式提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.因为有了外观,客户的工作将更加快捷简便.
组件建立后,将会组装于外观中,并直接将外观派发给客户,方便使用,因此外观模式简化了组件中的一系列接口,方便客户的操作.外观将客户从一个复杂的子系统中解耦.当需要简化并统一一个很大的接口或者一群复杂的接口时,使用外观.
下面是外观模式的具体使用,可以看出,通过外观模式,大大的简化了客户的操作,对于组件的操作将在具体的外观内部进行操作.
//组件 public interface Login { public void loginGame(); } class RpgLogin implements Login{ @Override public void loginGame() { System.out.println("Login in RPG Game!"); } }
//组件 public interface Information { public void getInformation(); } class RpgInformation implements Information { @Override public void getInformation() { System.out.println("get RPG Information."); } }
//组件 public interface Role { public void selectRole(); } class RpgRole implements Role{ public void selectRole() { System.out.println("Select a RPG GAME role."); } }
public interface PlayGame { public void play(); } class PlayRpgGame implements PlayGame { /*三个组件直接在外观类中进行实例化,客户看不到,客户只关心具体的调用.*/ Login log=new RpgLogin(); Information inf=new RpgInformation(); Role rol=new RpgRole(); @Override public void play() { log.loginGame(); inf.getInformation(); rol.selectRole(); } }
//通过外观模式大大简化了操作. public class Test { public static void main(String[] args) { PlayRpgGame play=new PlayRpgGame(); play.play(); } }