外观模式的目的不是给予子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统.
外观模式的本质是:封装交互,简化调用。
interface Executive{
public void approve();
}
class HealthOffice implements Executive{
@Override
public void approve() {
System.out.println("卫生局通过审批");
}
}
class RevenueOffice implements Executive{
@Override
public void approve() {
System.out.println("税务局完成登记,定时回去收税");
}
}
class SaicOffice implements Executive{
@Override
public void approve() {
System.out.println("工商局完成审核,办法营业执照");
}
}
public class FacadeTest {
public static void main(String[] args) {
System.out.println("开始办理行政手续...");
HealthOffice ho = new HealthOffice();
RevenueOffice ro = new RevenueOffice();
SaicOffice so = new SaicOffice();
ho.approve();
ro.approve();
so.approve();
System.out.println("行政手续终于办完了");
}
}
利用外观模式对上述类进行重定义。定义一个外观类:
class ApproveFacade {
public ApproveFacade() {
}
public void wholeApprove() {
new HealthOffice().approve();
new RevenueOffice().approve();
new SaicOffice().approve();
}
}
public class FacadeTest {
public static void main(String[] args) {
System.out.println("开始办理行政手续...");
ApproveFacade af = new ApproveFacade();
af.wholeApprove();
System.out.println("行政手续终于办完了");
}
}
网友评论