Alen自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家正新鸡排。烤鸡排可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。
行政审批总接口
public interface Executive {
public void approve();
}
卫生审批
package com.ma.springdata.facade;
public class HealthOffice implements Executive{
@Override
public void approve() {
System.out.println("衛生局通過審批");
}
}
税务审批
package com.ma.springdata.facade;
public class RevenueOffice implements Executive {
@Override
public void approve() {
System.out.println("税务局通过审批");
}
}
工商审批
package com.ma.springdata.facade;
public class SaleOffice implements Executive {
@Override
public void approve() {
System.out.println("工商局通过审批");
}
}
客户申请审批
package com.ma.springdata.facade;
public class FacadeTest {
public static void main(String[] args) {
System.out.println("开始办理行政手续");
HealthOffice healthOffice = new HealthOffice();
RevenueOffice revenueOffice = new RevenueOffice();
SaleOffice saleOffice = new SaleOffice();
healthOffice.approve(); //1次
revenueOffice.approve();//2次
saleOffice.approve();//3次
System.out.println("行政手续办理完成");
}
}
效果
开始办理行政手续
衛生局通過審批
税务局通过审批
工商局通过审批
行政手续办理完成
群众需要跑三趟 比较麻烦 简化行政审批 让群众跑一次 办成手续
FacadePattern 建立一个政务服务中心
package com.ma.springdata.facade;
public class ApproveFacade {
public ApproveFacade(){
}
public void wholeApprove(){
new HealthOffice().approve();
new RevenueOffice().approve();
new SaleOffice().approve();
}
}
用户只需到行政大厅 提交一个审批请求 系统自动完成
package com.ma.springdata.facade;
public class FacadeTest {
public static void main(String[] args) {
System.out.println("开始办理行政手续");
//跑一次 办成事
ApproveFacade approveFacade = new ApproveFacade();
approveFacade.wholeApprove();
System.out.println("行政手续办理完成");
}
}
开始办理行政手续
衛生局通過審批
税务局通过审批
工商局通过审批
行政手续办理完成
外观模式的目的不是给予子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统。
外观模式的本质是: