博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十三讲:外观模式
阅读量:5284 次
发布时间:2019-06-14

本文共 3606 字,大约阅读时间需要 12 分钟。

Facade把子系统的功能都包含进来了,这些子系统都有一个doSomething(),来给Client1和Client2调用的.

缺点是客户端是直接调用这些功能模块的.


//外观//最大的一个好处是我们的老百姓MainClass不用再调用子系统,因为你调用子系统的话还需要判断要调用哪些子系统,// public class Facade {     private  SystemA systemA;     private  SystemB systemB;     private  SystemC systemC;    public Facade() {        //super();        systemA = new SystemA();        systemB = new SystemB();        systemC = new SystemC();        }        //public void doSomething(){
public void doABC(){ this.systemA.doSomething(); this.systemB.doSomething(); this.systemC.doSomething(); } public void doAB(){ this.systemA.doSomething(); this.systemB.doSomething(); } }
//客户端...//缺点是客户端是直接调用这些功能模块的.//外观模式将客户端与具体的功能模块相区分,客户端所要知道的只有这个外观了.以后会接触门面模式,与外观模式是//完全不同的概念.//客户端只调用外观的方法,至于外观的方法里面怎么将功能模块组合和调用我不管.public class MainClass {  /*   public static void main(String[] args) {        //实现A子系统功能        SystemA  systemA = new SystemA();        systemA.doSomething();                SystemB systemB = new SystemB();        systemB.doSomething();                SystemC systemC  =   new SystemC();        systemC.doSomething();            } */    public static void main(String[] args) {        Facade  facade = new Facade();//这样客户端不与子系统打交道了,只与外观Facade打交道了.        //facade.doSomething();        facade.doABC();    }}
public class MainClass2 {    public static void main(String[] args) {/*        //实现A子系统功能        SystemA systemA  = new SystemA();        systemA.doSomething();                SystemB systemB = new SystemB();        systemB.doSomething();*/                Facade facade  =  new Facade();        facade.doAB();    }}
/** * A子系统 * @author zhongzh * */public class SystemA {     public void doSomething(){         System.out.println("实现A子系统功能");              }}
/** * B子系统 * @author zhongzh * */public class SystemB {     /*      * B子系统实现      *       */        public void doSomething(){        System.out.println("实现B子系统功能");    }}
/** * C子系统 * @author zhongzh * */public class SystemC {     /*      * C子系统实现功能      *       */        public void doSomething(){        System.out.println("实现C子系统功能");    }}

package com.ibeifeng.news;public class GuoZai {    public void mai(){        System.out.println("买国债");                    }}
package com.ibeifeng.news;public class Gupiao {   public  void mai(){       System.out.println("买股票");   }}
package com.ibeifeng.news;//基金有很多种,有货币型的基金,//外观模式include创建一个引用.public class JiJin {     private  Gupiao  gupiao;     private  GuoZai  guozai;     private  Qihuo qihuo;    public JiJin() {        this.guozai = new GuoZai();        this.gupiao = new Gupiao();        this.qihuo  = new Qihuo();            }    public void maiJijinA(){        this.guozai.mai();        this.gupiao.mai();            }    public void maiJijinB(){        this.guozai.mai();        this.gupiao.mai();        this.qihuo.chao();    }     }
package com.ibeifeng.news;public class MainClass {    public static void main(String[] args) {/*        //80年代,基金出现之前        Gupiao  gupiao  = new Gupiao();        gupiao.mai();                Qihuo qihuo = new Qihuo();        qihuo.chao();                GuoZai guozhai =  new GuoZai();        guozhai.mai();*/                //有了基金之后        /*JiJin jijin =  new JiJin();        jijin.maiJijinA();*/                JiJin jijin =  new JiJin();//另外一个老百姓...        jijin.maiJijinB();            }}
package com.ibeifeng.news;public class Qihuo {       public void  chao(){                        System.out.println("买期货");        }}

 

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6739893.html

你可能感兴趣的文章
linux命令行下xlsx转换成pdf或csv的笔记
查看>>
week1-绪论
查看>>
Linux root 用户下 selenium 运行chrome --no-sandbox的问题的解决
查看>>
Echo团队Alpha冲刺 - 测试随笔
查看>>
wordcount
查看>>
常用“Request.ServerVariables()”汇总
查看>>
Vue 还是 React 还是 Angular ?
查看>>
mysql 事务 存储过程 函数
查看>>
【MOSS】SPListItems操作
查看>>
转载 修改 Linux 内核 DM9000 支持 tiny210 开发板
查看>>
Sqoop2 环境搭建
查看>>
2018-2019-1 20165237 20165227 20165228 实验三 实时系统
查看>>
跳棋算法
查看>>
第三方库 jsoncpp 读写json
查看>>
使用git提交代码简单说明
查看>>
[leedcode 94] Binary Tree Inorder Traversal
查看>>
Session的配置
查看>>
SQL Server 行转列,列转行。多行转成一列
查看>>
如何做职业规划,才能跑赢90%的竞争者
查看>>
制作安装包遇到的问题安装netframewo
查看>>