很多人都會炒股,但散戶們就像待割的韭菜,割了又長,長了又被割,很多人樂此不疲,在股市虧了不少錢,繳了不少智商費。
股民炒股票程式碼:
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互動。