12外观模式Facade

一、什么是外观模式

  Facade模式也叫外观模式,是由GoF提出的 23种设计模式中的一种。Facade模式为一组具 有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。

二、外观模式的结构

三、外观模式的角色和职责

  Facade     为调用方定义简单的调用接口。

  Clients     调用者。通过Facade接口调用提供某功能的内部类群。

  Packages     功能提供者。指提供功能的类群(模块或子系统)。

A子系统

 1 /*
 2  * A子系统
 3  */
 4 public class SystemA {
 5     /*
 6      * A子系统实现功能
 7      */
 8     public void doSomething() {
 9         System.out.println("实现A子系统功能");
10     }
11 }

B子系统

 1 /*
 2  * B子系统
 3  */
 4 public class SystemB {
 5 
 6     /*
 7      * B子系统实现功能
 8      */
 9     public void doSomething() {
10         System.out.println("实现B子系统功能");
11     }
12 }

C子系统

 1 /*
 2  * C子系统
 3  */
 4 public class SystemC {
 5 
 6     /*
 7      * C子系统实现功能
 8      */
 9     public void doSomething() {
10         System.out.println("实现C子系统功能");
11     }
12 }

外观

 1 //外观
 2 public class Facade {
 3     private SystemA systemA;
 4     private SystemB systemB;
 5     private SystemC systemC;
 6     
 7     public Facade() {
 8         systemA = new SystemA();
 9         systemB = new SystemB();
10         systemC = new SystemC();
11     }
12     
13     public void doABC() {
14         this.systemA.doSomething();
15         this.systemB.doSomething();
16         this.systemC.doSomething();
17     }
18     
19     public void doAB() {
20         this.systemA.doSomething();
21         this.systemB.doSomething();
22     }
23 }

测试

1 public class MainClass {
2     public static void main(String[] args) {
3         Facade facade = new Facade();
4         facade.doABC();
5     }
6 }
1 public class MainClass2 {
2     public static void main(String[] args) {
3         Facade facade = new Facade();
4         facade.doAB();
5     }
6 }

====================================================================

国载

1 //国载
2 public class GuoZai {
3     
4     public void mai() {
5         System.out.println("买国债");
6     }
7 }

股票

1 //股票
2 public class Gupiao {
3     
4     public void mai() {
5         System.out.println("买股票");
6     }
7 }

期货

1 //期货
2 public class Qihuo {
3     
4     public void chao() {
5         System.out.println("买期货");
6     }
7 }

基金

 1 //基金
 2 public class JiJin {
 3     private Gupiao gupiao;
 4     private GuoZai guozai;
 5     private Qihuo qihuo;
 6     
 7     public JiJin() {
 8         this.guozai = new GuoZai();
 9         this.gupiao = new Gupiao();
10         this.qihuo = new Qihuo();
11     }
12     
13     public void maiJijinA() {
14         this.guozai.mai();
15         this.gupiao.mai();
16     }
17     
18     public void maiJijinB() {
19         this.guozai.mai();
20         this.gupiao.mai();
21         this.qihuo.chao();
22     }
23 }

测试

 1 public class MainClass {
 2     public static void main(String[] args) {
 3 //        //80年代,基金出现之前
 4 //        Gupiao gupiao = new Gupiao();
 5 //        gupiao.mai();
 6 //        
 7 //        Qihuo qihuo = new Qihuo();
 8 //        qihuo.chao();
 9 //        
10 //        GuoZai guozhai = new GuoZai();
11 //        guozhai.mai();
12         //有了基金之后
13 //        JiJin jijin = new JiJin();
14 //        jijin.maiJijinA();
15         JiJin jijin = new JiJin();
16         jijin.maiJijinB();
17     }
18 }

猜你喜欢

转载自www.cnblogs.com/justdoitba/p/9033113.html