外观模式也叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。就是对外提供了一个门面,里边封装了多个接口的聚合数据。就像我们买基金,都是由基金经理帮我们操作具体到对应的股票,债券等等。
1.自己买股票的情形
具体代码如下:
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:05 * @descrition 地产1 * @Version 1.0 * @mail victorydeng@163.com */ public class Realty1 { public void sell() { System.out.println("地产1卖出"); } public void buy() { System.out.println("地产1买入"); } }
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:01 * @descrition 国债1 * @Version 1.0 * @mail victorydeng@163.com */ public class NationalDebt1 { public void sell() { System.out.println("国债1卖出"); } public void buy() { System.out.println("国债1买入"); } }
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:01 * @descrition 股票1 * @Version 1.0 * @mail victorydeng@163.com */ public class Stock1 { public void sell() { System.out.println("股票1卖出"); } public void buy() { System.out.println("股票1买入"); } }
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:01 * @descrition 股票2 * @Version 1.0 * @mail victorydeng@163.com */ public class Stock2 { public void sell() { System.out.println("股票2卖出"); } public void buy() { System.out.println("股票2买入"); } }
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:01 * @descrition 股票3 * @Version 1.0 * @mail victorydeng@163.com */ public class Stock3 { public void sell() { System.out.println("股票3卖出"); } public void buy() { System.out.println("股票3买入"); } }
亲力亲为版测试:
public class TestOld { public static void main(String[] args) { Stock1 stock1 = new Stock1(); Stock2 stock2 = new Stock2(); Stock3 stock3 = new Stock3(); NationalDebt1 nationalDebt1 = new NationalDebt1(); Realty1 realty1 = new Realty1(); stock1.sell(); stock1.buy(); stock2.sell(); stock2.buy(); stock3.sell(); stock3.buy(); nationalDebt1.sell(); nationalDebt1.buy(); realty1.sell(); realty1.buy(); }
result:
2.基金经理接入后的门面模式
基金门面:
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:23 * @descrition 基金门面 * @Version 1.0 * @mail victorydeng@163.com */ public class FoundFacade { private Stock1 stock1; private Stock2 stock2; private Stock3 stock3; private NationalDebt1 nationalDebt1; private Realty1 realty1; public FoundFacade() { this.stock1 = new Stock1(); this.stock2 = new Stock2(); this.stock3 = new Stock3();; this.nationalDebt1 = new NationalDebt1(); this.realty1 = new Realty1(); } public void sell(){ stock1.sell(); stock2.sell(); stock3.sell(); nationalDebt1.sell(); realty1.sell(); } public void buy(){ stock1.buy(); stock2.buy(); stock3.buy(); nationalDebt1.buy(); realty1.buy(); } }
测试:
/** * @author dxy * @version 1.0 * @date 2021/11/19 15:05 * @descrition 新的测试 * @Version 1.0 * @mail victorydeng@163.com */ public class TestNew { public static void main(String[] args) { FoundFacade facade = new FoundFacade(); facade.buy(); facade.sell(); } }
result: