大话设计模式-第12章 牛市股票还会亏钱?--外观模式- 高飞网

第12章 牛市股票还会亏钱?--外观模式

2016-02-02 11:19:40.0

外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。  

下面是外观模式类图:

下面是示例代码:


public class SubSystem1{
        public void method1(){
                System.out.println("子系统方法1");
        }
}
public class SubSystem2{
        public void method2(){
                System.out.println("子系统方法2");
        }
}
public class SubSystem3{
        public void method3(){
                System.out.println("子系统方法3");
        }
}
public class Facade{//外观,提供一致的界面
        private SubSystem1 subSystem1;
        private SubSystem2 subSystem2;
        private SubSystem3 subSystem3;

        public Facade(){
                this.subSystem1 = new SubSystem1();
                this.subSystem2 = new SubSystem2();
                this.subSystem3 = new SubSystem3();
        }

        public void methodA(){
                subSystem1.method1();
                subSystem2.method2();
        }

        public void methodB(){
                subSystem2.method2();
                subSystem3.method3();
        }
}
public class App{
        public static void main(String[] args){
                Facade facade = new Facade();
                facade.methodA();
                facade.methodB();
        }
}


应用:

在设计初期,应有意识的将不同的两个层分离,如经典的mvc三层架构。控制层调用服务层,服务层就是一个外观体现,一个接口可能封闭了多个子系统业务构成一个大的完整的业务。

另外SevletAPI中对session设计,也使用了外观模式,参考:Session的体系架构