Python外观模式(Facade)实现子系统统一接口
外观模式(Facade Pattern)旨在为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得子系统更加容易使用。本文通过Python代码实例,展示如何封装复杂的子系统逻辑。
外观模式核心概念
外观模式的核心在于“简化”。它不改变子系统原有的功能,而是通过一个统一的入口(Facade类)来协调内部多个子系统的交互。客户端只需与外观类交互,无需直接了解子系统的具体实现细节。
Python代码实现
以下代码定义了一个基金(Fund)外观类,以及股票A、股票B和房地产三个子系统类。外观类在初始化时持有子系统实例,并提供统一的买入(buy)和卖出(sell)方法。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
"""
大话设计模式
设计模式——外观模式
facade_pattern.py
外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易是用
"""
# 外观类
class Fund(object):
def __init__(self):
self.stocka = StockA()
self.stockb = StockB()
self.realty = Realty()
def buy(self):
self.stocka.buy()
self.stockb.buy()
self.realty.buy()
def sell(self):
self.stocka.sell()
self.stockb.sell()
self.realty.sell()
# 投资股票A类
class StockA(object):
def buy(self):
print 'buy StockA'
def sell(self):
print 'sell StockA'
# 投资股票B类
class StockB(object):
def buy(self):
print 'buy StockB'
def sell(self):
print 'sell StockB'
# 投资房地产
class Realty(object):
def buy(self):
print 'buy Realty'
def sell(self):
print 'sell Realty'
if __name__=="__main__":
fund = Fund()
fund.buy()
fund.sell()
运行结果分析
执行上述代码后,客户端通过调用 fund.buy() 和 fund.sell(),即可触发所有子系统的相应操作。控制台将依次输出:
- buy StockA
- buy StockB
- buy Realty
- sell StockA
- sell StockB
- sell Realty
这验证了外观模式能够有效屏蔽子系统复杂性,为客户端提供简洁的操作接口。
以上就是Python外观模式(Facade)实现子系统统一接口的详细内容,更多关于Python设计模式资料请关注本站其它相关文章!免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









