当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 设计模式之外观模式

设计模式之外观模式

2018年07月21日  | 移动技术网IT编程  | 我要评论

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

股民炒股票代码:

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

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网