Python设计模式之外观模式实例详解
作者:Andy冉明 发布时间:2022-01-18 16:39:37
标签:Python,设计模式,外观模式
本文实例讲述了Python设计模式之外观模式。分享给大家供大家参考,具体如下:
外观模式(Facade Pattern):为子系统中的一组接口提供一个一致界面,此模式定义一个高层接口,使得子系统更加容易使用
下面是一个外观模式的demo:
#!/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()
运行结果:
buy StockA
buy StockB
buy Realty
sell StockA
sell StockB
sell Realty
上面类的设计如下图:
Fund类需要知道子系统类的功能,以便将适当的client请求发送给合适的子系统对象,使子系统的使用更加简单
希望本文所述对大家Python程序设计有所帮助。
来源:https://www.cnblogs.com/onepiece-andy/p/python-facade-pattern.html
0
投稿
猜你喜欢
- 什么是 Python 中的 Lambda 函数今天我们来学习 Python 中的 lambda 函数,并探讨使用它的优点和局限性Let
- from urllib.request import urlopen  
- 今天,由于工作需要,我在自己的电脑上配置了Mysql5环境,同时安装了一个phpMyAdmin管理工具,安装完成后,发现在phpMyAdmi
- 脚本1:这两天用python写了一个删除指定目录下过期时间的脚本。也可能是我初学python,对python还不够熟习,总觉得这个脚本用sh
- golang 中多个 defer 的执行顺序引用 Ture Go 中的一个示例:package mainimport "fmt&q
- 本文代码将一些简单常用的SQL语句,拆分、封装成链式函数与终结函数,链式操作没有先后之分,实现傻瓜式mysql数据库操作。 同时学习下静态成
- 最近 UCDChina 以“注意界面上的文字”为主题写了一系列的文章,使我在界面文字上的使用受益匪浅。之后,我对按钮上的内容的表现也做了一些
- virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库。
- (1)OracleServiceSID 数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程
- 使用图层可以像素为单位精确定位页面元素,并且可以将层放置在页面的任意位置。当把页面元素放入图层之中时,还可以控制哪个显示在前面、哪个显示在后
- 1 写在前面1. 本文介绍的是基于TensorFlow tf.estimator接口的深度学习网络,而非TensorFlow&nb
- <%''调用例子'Dim int_RPP,int_Start,int_showNumberLink
- 一看,C盘只有不到2M可用空间,一查原因,sqlserver安装路径下的log目录文件占了好大,5G多, 于是上网搜了下,解决了: 把与sq
- 一、避免Firefox 背景图不显示的兼容问题,定义background 属性,先后顺序不能随意变动。background : backgr
- Fucklt.py 使用了最先进的技术能够使你的代码不管里面有什么样的错误,你只管 FuckIt,程序就能"正常"执行,
- 我使用“ Web 2.0设计”来形容目前占主导优势的网页设计风格, 很多人用这个词来形容:网络经济的复苏网站和用户之间更高水平的交互或一种社
- 在软件开发的初始阶段,开发商们总是想把整个系统的最小的细节设计好了,然后再去单线程的编写代码。这样软件开发完成需要很长时间,但开发商们一直都
- 突然有个想法,不知道是不是首创:用"表情符号"做植入广告. 目前的表情符号 "黄色小圆脸"系列可以说
- PyQt5动态(可拖动控件大小)布局控件QSplitter简介PyQt还提供了特殊的布局管理器QSplitter。它可以动态地拖动子控件之间
- asp中我们可以利用ERR对象来判断sql语句执行是否成功:SQL="Insert INTO TABLE(F1,F2) value