外观模式
简介
定义
- 外观模式是结构型模式。
- 外观模式即为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
- 外观模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
好处
1、减少系统相互依赖,降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响外观对象。
2、提高灵活性,减少了客户处理的对象数目。
3、提高了安全性。
缺点
不符合开闭原则
主要角色
- 外观(Facade)角色:为多个子系统对外提供一个共同的接口。
- 子系统(SubSystem)角色:实现系统的部分功能,客户可以通过外观角色访问它。
- 客户(Client)角色:通过一个外观角色访问各个子系统的功能。
实例
创建子系统角色
package FacadePattern;
public class SubSystemHotel {
public void display() {
System.out.println("进入酒店系统!");
}
}
public class SubSystemMeal {
public void display() {
System.out.println("进入点餐系统!");
}
}
public class SubSystemMed {
public void display() {
System.out.println("进入医药系统!");
}
}
创建外观角色
package FacadePattern;
public class Facade {
private SubSystemHotel hotel=new SubSystemHotel();
private SubSystemMeal meal=new SubSystemMeal();
private SubSystemMed med=new SubSystemMed();
public void display(){
System.out.println("欢迎进入某团");
hotel.display();
meal.display();
med.display();
}
}
用户使用
package FacadePattern;
public class Client {
public static void main(String[] args) {
Facade facade=new Facade();
facade.display();
}
}
结果
总结
通常在以下情况下可以考虑使用外观模式。
1、对分层结构系统构建时,使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。
2、当一个复杂系统的子系统很多时,外观模式可以为系统设计一个简单的接口供外界访问。
3、当客户端与多个子系统之间存在很大的联系时,引入外观模式可将它们分离,从而提高子系统的独立性和可移植性。
关注博主,一起来学习设计模式吧