欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式之外观模式

程序员文章站 2022-03-26 13:28:46
很多人都会炒股,但散户们就像待割的韭菜,割了又长,长了又被割,很多人乐此不疲,在股市亏了不少钱,缴了不少智商费。 股民炒股票代码: 功能是实现了,但客户端测试代码太难看了,每一项资产的买入或卖出都是直接罗列出来的,没有体现封装。再者,股民自己选择买入或卖出股票也不专业,同时也需要关注大量股票信息,时 ......

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

股民炒股票代码:

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交互。