首页 > 其他分享 >08-外观模式

08-外观模式

时间:2023-01-27 20:33:29浏览次数:50  
标签:sell 外观 buy 08 模式 public println facade void

08-外观模式

概念

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

什么时候使用外观模式

三个阶段:
首先,在设计初期,应该有意识的将不同的两个层分离,在层与层之间简历外观Facade, 例如典型的三层架构,这样可以为复杂的子系统提供一个简单的接口,大大降低耦合;
其次,在开发阶段,子系统往往因为不断的重构烟花而变得越来越复杂,增加外观模式(facade)可以提供一个简单的接口,减少他们之间的依赖;
第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,但其非常重要,新系统会依赖于它,此时可以开发一个外观facade类,来提供设计粗糙或者高度复杂的遗留代码的比较清晰的简单接口,让新系统与facade对象交互,facade与遗留代码交互所有复杂的工作。

实践

以基金为例,一个基金由基金经理打理,其会购买多种类型的股票并时不时的进行买入和卖出的工作,而我们个人只用买入基金,无需进行多个股票的操作,便可以由一定的收益,不用具备过深的金融领域的相关知识。

package com.niao.facade;

public class Stock1 {
    public void buy(){
        System.out.println("Buy stock1.");
    }

    public void sell(){
        System.out.println("Sell stock1.");
    }
}
package com.niao.facade;

public class Stock2 {
    public void buy(){
        System.out.println("Buy stock2.");
    }

    public void sell(){
        System.out.println("Sell stock2.");
    }
}
package com.niao.facade;

public class NationalDebt1 {
    public void buy(){
        System.out.println("Buy national debt.");
    }

    public void sell(){
        System.out.println("Sell national debt.");
    }
}
package com.niao.facade;

public class Realty1 {
    public void buy(){
        System.out.println("Buy realty.");
    }

    public void sell(){
        System.out.println("Sell realty.");
    }
}
package com.niao.facade;

public class Fund {
    private Stock1 stock1;
    private Stock2 stock2;
    private NationalDebt1 nationalDebt1;
    private Realty1 realty1;

    public Fund() {
        stock1 = new Stock1();
        stock2 = new Stock2();
        nationalDebt1 = new NationalDebt1();
        realty1 = new Realty1();
    }

    public void buy(){
        stock1.buy();
        stock2.buy();
        nationalDebt1.buy();
        realty1.buy();
    }

    public void sell(){
        stock1.sell();
        stock2.sell();
        nationalDebt1.sell();
        realty1.sell();
    }
}
package com.niao.facade;

public class Client {
    public static void main(String[] args) {
        Fund fund = new Fund();
        fund.buy();
        fund.sell();
    }
}

标签:sell,外观,buy,08,模式,public,println,facade,void
From: https://www.cnblogs.com/Oh-mydream/p/17069284.html

相关文章

  • [qoj4208]Flight to the Ford
    维护两个集合\(S\)和\(T\),表示当前最后一个询问正确/错误时可能的答案初始\(S=[1,10^{9}]\)且\(T=\empty\),每次划分\(\begin{cases}S=S_{1}\cupS_{2}\\T=T_{1}\cupT_{2......
  • 08 冒泡排序
    冒泡排序代码packagecom.zhan.base04Array;publicclassTest08{publicstaticvoidmain(String[]args){int[]a={1,5,3,8,6};sort(a);......
  • 08-从 objects 到 QuerySet
    调试特点如果B继承了A,那么在调试器中,只能看到B的直接属性或者方法,看不到它所继承的。先明白这一点Manager注意每一窗口下方的代码位置,方便快速定位代码。【1......
  • MySQL 安装(源码安装模式)
    ​​MySQL安装(RPM安装模式)及目录结构​​​​MySQL安装(二进制安装模式)​​MySQL安装(源码安装模式)本篇使用mysql源码来安装,稍微比较麻烦。 CentOSrelease5.11+mysql-5......
  • Windows 2008 + SQLServer 2008 双机群集
    SQLserver版本要求:标准版(2个节点),企业版(16个节点)安装前,先了解相关信息:​​SQLServer2008故障转移群集入门 ​​SQLServer2008 群集是基于Windows群集:​​Windows2......
  • CF908G 题解
    题意传送门给\(x\le10^{700}\),问\(1\)到\(x\)中每个数在各数位排序后得到的数的和。答案模\(10^9+7\)。题解学到一种新鲜的转化方式,来记一下。将\(x\)的位数......
  • java23种设计模式
    Java设计模式学习创建型模式简单工厂模式简单工厂模式严格意义上来说,并不属于设计模式中的一种,不过这里还是简单记录下。定义:由一个工厂对象决定创建出哪一种类型实例......
  • Windows 2008 双机群集配置(for SQLServer)
    此处配置Windows2008群集,将用于SQLserver2008双机故障转移群集,此处SQLserver的群集基于Windows群集实现。Windows2008集群更容易实现了,只要规划好IP和磁盘分配,可一直......
  • 模板方法设计模式
    模板方法设计模式1.说明核心是:定义一个模板类,在模板类中规定其整体的骨架并确定哪些方法是允许子类可以去重写的,哪些是不允许子类去重写的.用来保证核心算法不被破坏.......
  • Codeforces 708 A-E1题解
    A.Meximization这道题问给一些数,如何让前缀的mex之和最大,那么首先,我们要抬mex的话肯定是要把前面都铺垫完的,所以在i位置确定的时候,i+1自然是越大越好,可以证明i+1的位......