外观(Facade)模式[python版]

外观模式提供了一个统一的接口,简化了子系统的访问。在Python中,该模式通过创建一个高层接口,使系统更易使用和扩展。与简单工厂模式+策略模式不同,Facade模式将复杂操作进行了封装。常用于需要与复杂遗留系统交互的场景,以减少新系统与遗留代码的耦合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外观(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();

类图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值