• 设计模式之外观模式


    很多人都会炒股,但散户们就像待割的韭菜,割了又长,长了又被割,很多人乐此不疲,在股市亏了不少钱,缴了不少智商费。

    股民炒股票代码:

    public class Stock1 {
        public void sell(){
            System.out.println("股票1卖出");
        }
        public void buy(){
            System.out.println("股票1买入");
        }
    }
    
    class Stock2 {
        public void sell(){
            System.out.println("股票2卖出");
        }
        public void buy(){
            System.out.println("股票2买入");
        }
    }
    
    class NationalDebt1 {
        public void sell(){
            System.out.println("国债1卖出");
        }
        public void buy(){
            System.out.println("国债1买入");
        }
    }
    
    class Realty1 {
        public void sell(){
            System.out.println("房产1卖出");
        }
        public void buy(){
            System.out.println("房产1买入");
        }
    }
    public class Test {
    
        public static void main(String[] args) {
            //test 1
            Stock1 stock1 = new Stock1();
            Stock2 stock2 = new Stock2();
            NationalDebt1 nd1 = new NationalDebt1();
            Realty1 realty1 = new Realty1();
            stock1.buy();
            stock2.buy();
            nd1.buy();
            realty1.buy();
            
            stock1.sell();
            stock2.sell();
            nd1.sell();
            realty1.sell();
    
        }
    
    }

    功能是实现了,但客户端测试代码太难看了,每一项资产的买入或卖出都是直接罗列出来的,没有体现封装。再者,股民自己选择买入或卖出股票也不专业,同时也需要关注大量股票信息,时间精力也不够。这时我们可以让基金公司来帮我们打理,这样更专业。

    public class Fund {
        Stock1 stock1;
        Stock2 stock2;
        NationalDebt1 nd1;
        Realty1 realty1;
        public Fund(){
            stock1 = new Stock1();
            stock2 = new Stock2();
            nd1 = new NationalDebt1();
            realty1 = new Realty1();
        }
        public void buyFund(){
            stock1.buy();
            stock2.buy();
            nd1.buy();
            realty1.buy();
        }
        public void sellFund(){
            stock1.sell();
            stock2.sell();
            nd1.sell();
            realty1.sell();
        }
    }
    public class Test {
    
        public static void main(String[] args) {
            System.out.println("----------------------------");
            Fund fund = new Fund();
            fund.buyFund();
            fund.sellFund();
        }
    
    }

    完美体现了依赖倒转原则和迪米特法则。

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

    何时使用外观模式:

    首先,在设计初期阶段,应该要有意识地将不同的两个层分离,层与层之间建立外观facade。

    其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观facade可以提供一个简单的接口,减少他们之间的依赖。

    第三,在维护遗留的大型系统时,可以为新系统开发一个facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与facade交互。

  • 相关阅读:
    linux第三方程序移植
    jffs2文件系统制作
    NFS文件系统制作
    linux-3.0内核移植到fl2440开发板(以MINI2440为模板)
    linux根文件系统制作
    u-boot-2010.09移植(A)
    u-boot-2010.09移植(B)
    browser shell
    管理者的角色修炼-第三课-赢在执行
    管理者的角色修炼-第二课总结
  • 原文地址:https://www.cnblogs.com/shicaiyou/p/9340572.html
Copyright © 2020-2023  润新知