Python外观模式(Facade)实现子系统统一接口

白榆
白榆
发布时间:2026-10-11| 3人浏览过
原创

外观模式(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设计模式资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。