设计模式之外观模式
程序员文章站
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交互。
上一篇: flask-login原理详解
下一篇: 顺序算法