外观模式
1、什么是外观模式
为多个复杂的子系统提供一个一致的外观接口入口,而使这些子系统更加容易被访问,就比如此时现在有一个下单功能,需要增加订单,减库存,等等操作,此时用户调用多个比较麻烦,这时就比较适合使用外观模式。
2、与建造者模式区别
此时发现外观模式和建造者模式很像,都是包装子方法,给外界提供一个唯一的入口,方便调用者调用,但是其中的区别在于,建造者模式可能会有多种类进行实现,比如可以创建平房也可以创建楼房,但是外观模式就不注重创建,只关注将多个对象组合,
以方便调用者调用。
3、代码实现
以下使用订单下单和取消订单为例子,展示用外观模式将订单系统和库存系统同时在外观类中调用的情况
1、创建订单系统
public class OrderSystem {
public void submit(){
System.out.println("下单");
}
public void cancel(){
System.out.println("取消订单");
}
}
2、创建库存系统
public class StockSystem {
public void out(){
System.out.println("库存出库");
}
public void in(){
System.out.println("库存入库");
}
}
3、外观对象,核心是对外暴露接口,使外界可以直接调用外观对象中的方法,实现下单要处理的所有内容
//外观对象
public class Facade {
private OrderSystem orderSystem = new OrderSystem();
private StockSystem stockSystem = new StockSystem();
//下单方法
public void submit(){
orderSystem.submit();
stockSystem.out();
}
//取消订单方法
public void cancel(){
orderSystem.cancel();
stockSystem.in();
}
}
4、直接使用外观类进行调用,此时调用者就十分简单
public static void main(String[] args) {
Facade facade = new Facade();
//下单
facade.submit();
//取消订单
facade.cancel();
}