github地址:https://github.com/cheesezh/python_design_patternspython
用程序模擬股民直接炒股的代碼,好比股民投資了股票1,股票2,股票3,國債1,房地產1.git
class Stock1(): def sell(self): print("賣出股票1") def buy(self): print("買入股票1") class Stock2(): def sell(self): print("賣出股票2") def buy(self): print("買入股票2") class Stock3(): def sell(self): print("賣出股票3") def buy(self): print("買入股票3") class NationalDebt1(): def sell(self): print("賣出國債1") def buy(self): print("買入國債1") class Realty1(): def sell(self): print("賣出房地產1") def buy(self): print("買入房地產1") def user_action(): """ 模擬股民的操做,股民須要瞭解各個理財產品的走勢,進而買入賣出 """ gu1 = Stock1() gu2 = Stock2() gu3 = Stock3() nd1 = NationalDebt1() rt1 = Realty1() gu1.buy() gu2.buy() gu3.buy() nd1.buy() rt1.buy() gu1.sell() gu2.sell() gu3.sell() nd1.sell() rt1.sell() user_action()
買入股票1 買入股票2 買入股票3 買入國債1 買入房地產1 賣出股票1 賣出股票2 賣出股票3 賣出國債1 賣出房地產1
用程序模擬股民經過基金理財的代碼,股民只須要購買&賣出基金便可,不須要對具體的股票等有了解.github
class Fund(): def __init__(self): self.gu1 = Stock1() self.gu2 = Stock2() self.gu3 = Stock3() self.nd1 = NationalDebt1() self.rt1 = Realty1() def sell(self): self.gu1.sell() self.gu2.sell() self.gu3.sell() self.nd1.sell() self.rt1.sell() def buy(self): self.gu1.buy() self.gu2.buy() self.gu3.buy() self.nd1.buy() self.rt1.buy() def user_action(): """ 模擬股民的操做,股民只須要買進賣出基金便可 """ fund = Fund() fund.buy() fund.sell() user_action()
買入股票1 買入股票2 買入股票3 買入國債1 買入房地產1 賣出股票1 賣出股票2 賣出股票3 賣出國債1 賣出房地產1
外觀模式,爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用[DP]。架構
class SubSystemOne(): def method_one(self): print("子系統方法1") class SubSystemTwo(): def method_two(self): print("子系統方法2") class SubSystemThree(): def method_three(self): print("子系統方法3")
class Facade(): def __init__(self): self.one = SubSystemOne() self.two = SubSystemTwo() self.three = SubSystemThree() def method_a(self): self.one.method_one() self.two.method_two() def method_b(self): self.two.method_two() self.three.method_three() def main(): facade = Facade() facade.method_a() facade.method_b() main()
子系統方法1 子系統方法2 子系統方法2 子系統方法3
外觀模式完美的體現了依賴倒轉原則和迪米特法則的思想,是很是經常使用的模式之一。設計
那麼何時使用外觀模式最好?code