外观(Facade)模式:为子系统中的一组接口提供一个一致的界面。
——此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
与其它模式的区别:与 “简单工厂模式+策略模式”的组合版 很类似,不过外观类的接口不是简单的调用功能类的相应接口,而是封装成了新的接口。
使用场景:维护一个遗留的大型系统是,可能这个系统已经非常难以维护和扩展,但是它包含很重要的功能,新的开发必须依赖于它,这样增加外观Facade类,为系统封装一个比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作
#encoding=utf-8
#
#by panda
#外观模式(Facade)
def printInfo(info):
print unicode(info, 'utf-8').encode('gbk')
class Stock1():
name = '股票1'
def buy(self):
printInfo('买 '+self.name)
def sell(self):
printInfo('卖 '+self.name)
class Stock2():
name = '股票2'
def buy(self):
printInfo('买 '+self.name)
def sell(self):
printInfo('卖 '+self.name)
class NationDebt1():
name = '国债1'
def buy(self):
printInfo('买 '+self.name)
def sell(self):
printInfo('卖 '+self.name)
class Realty1():
name = '房地产1'
def buy(self):
printInfo('买 '+self.name)
def sell(self):
printInfo('卖 '+self.name)
#基金
class Fund():
gu1 = None
gu2 = None
nd1 = None
rt1 = None
def __init__(self):
self.gu1 = Stock1()
self.gu2 = Stock2()
self.nd1 = NationDebt1()
self.rt1 = Realty1()
def buyFund(self):
self.gu1.buy()
self.gu2.buy()
self.nd1.buy()
self.rt1.buy()
def sellFund(self):
self.gu1.sell()
self.gu2.sell()
self.nd1.sell()
self.rt1.sell()
def clientUI():
myFund = Fund()
myFund.buyFund()
myFund.sellFund()
return
if __name__ == '__main__':
clientUI();
类图: