python的编程模式-实例解析Python设计模式编程之桥接模式的运用
这篇文章主要介绍了Python设计模式编程之桥接模式的运用,桥接模式主张把抽象部分与它的实现部分分离,需要的朋友可以参考下
我们先来看一个例子:
#encoding=utf-8
#
#by panda
#桥接模式
def printInfo(info):
print unicode(info,
'utf-8').encode('gbk')
#抽象类:手机品牌
class HandsetBrand():
soft = None
def SetHandsetSoft(self,
soft):
self.soft =
soft
def
Run(self):
pass
#具体抽象类:手机品牌1
class
HandsetBrand1(HandsetBrand):
def
Run(self):
printInfo('手机品牌1:')
self.soft.Run()
#具体抽象类:手机品牌2
class
HandsetBrand2(HandsetBrand):
def
Run(self):
printInfo('手机品牌2:')
self.soft.Run()
#功能类:手机软件
class HandsetSoft():
def
Run(self):
pass
#具体功能类:游戏
class HandsetGame(HandsetSoft):
def
Run(self):
printInfo('运行手机游戏')
#具体功能类:通讯录
class
HandsetAddressList(HandsetSoft):
def
Run(self):
printInfo('运行手机通信录')
def clientUI():
h1 =
HandsetBrand1()
h1.SetHandsetSoft(HandsetAddressList())
h1.Run()
h1.SetHandsetSoft(HandsetGame())
h1.Run()
h2 =
HandsetBrand2()
h2.SetHandsetSoft(HandsetAddressList())
h2.Run()
h2.SetHandsetSoft(HandsetGame())
h2.Run()
return
if __name__ == '__main__':
clientUI();
可以总结出类图是这样的:
所以,桥接模式的概念在于将系统抽象部分与它的实现部分分离,使它们可以独立地变化。
由于目标系统存在多个角度的分类,每一种分类都会有多种变化,那么就可以把多角度分离出来,让它们独立变化,减少它们之间的耦合。
下面我们再来看一个实例:
基本原理请参考相关书籍,这里直接给实例
假期旅游 从目的地角度可以分为 上海和大连,从方式角度可以分为跟团和独体
桥接模式把这两种分类连接起来可以进行选择。
类图:
# -*- coding: utf-8
-*-
#######################################################
#
# tour.py
# Python implementation of
the Class DaLian
# Generated by Enterprise
Architect
# Created
on: 11-十二月-2012 16:53:52
#
#######################################################
from__future__importdivision
from__future__importprint_function
from__future__importunicode_literals
fromfuture_builtinsimport*
classTravelForm(object):
"""This class defines the
interface for implementation classes.
"""
def__init__(self, form="stay at
home"):
self.form=form
pass
defGetForm(self):
returnself.form
pass
pass
classGroup(TravelForm):
"""This class implements the
Implementor interface and defines its concrete
implementation.
"""
def__init__(self, form="by
group"):
super(Group,self).__init__(form)
pass
pass
classIndependent(TravelForm):
"""This class implements the
Implementor interface and defines its concrete
implementation.
"""
def__init__(self, form="by
myself"):
super(Independent,self).__init__(form)
pass
classDestination(object):
"""This class (a) defines the
abstraction's interface, and (b) maintains a
reference to an object of type
Implementor.
"""
m_TravelForm=TravelForm()
def__init__(self, info):
self.info=info
pass
defGetInfo(self):
#
imp->Operation();
returnprint(self.info
" " self.form.GetForm())
pass
defSetForm(self, form):
self.form=form
pass
classDaLian(Destination):
"""This class extends the
interface defined by Abstraction.
"""
def__init__(self, info="Go to
DaLian "):
super(DaLian,self).__init__(info)
pass
classShangHai(Destination):
"""This class extends the
interface defined by Abstraction.
"""
def__init__(self, info="Go to
ShangHai"):
super(ShangHai,self).__init__(info)
pass
#客户端
if(__name__=="__main__"):
destination=ShangHai()
destination.SetForm(Group())
destination.GetInfo()
destination=DaLian()
destination.SetForm(Independent())
destination.GetInfo()
运行结果
python的编程模式-实例解析Python设计模式编程之桥接模式的运用相关推荐
- python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...
- __init__在python中的用法知乎_python中对_init_的理解及实例解析 python为什么要有一个init函数 知乎...
Python中"__init__"的意义是什么? Python中__init__的意义依偎着你心跳声如此频繁,就算世界末日小编也会嚣张的笑. 测试人员学python时,应该如何理解 ...
- Python爬虫怎么挣钱?解析Python爬虫赚钱方式,轻轻松松月入两万,再也不用为钱发愁啦
Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想通过自己学到的专业技能赚钱,首先需要掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,可以通过Python爬虫外包项目.整合信 ...
- Python爬虫怎么挣钱?解析Python爬虫赚钱方式
Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想过自己学到的专业技能赚钱,首先需要你能够数量掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,Python爬虫可以通过Pyth ...
- MVP 模式实例解析
MVP 模式实例解析 引言 可能有的朋友已经看过我翻译的Jean-Paul Boodhoo的 模型-视图-提供器 模式 一文了(如果没有,建议你先看下再看这篇文章,毕竟这两篇是紧密联系的).在那篇文章 ...
- 简易理解设计模式之:桥接模式——穿衣服经典案例2
介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...
- Linux中三种网络模式是什么意思——bridged(一桥接模式)
原文链接:http://www.linuxidc.com/Linux/2016-09/135521.htm 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很 ...
- php 线程锁,如何使用python线程锁(实例解析)
在这篇文章之中我们来了解一下什么是python线程锁.了解一下python线程锁的相关知识,以及线程锁在python编程之中能起到什么样的作用. 线程锁(互斥锁Mutex) 一个进程下可以启动多个线程 ...
- python中返回上一步操作_通过实例解析Python文件操作实现步骤
当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. Python 提供了内置的文件对象,以及 ...
最新文章
- ubuntu 14.04 双显卡安装NVIDIA GPU驱动+CUDA+编译配置caffe
- DM8168 编译filesystem步骤
- 怎样验证TextBox输入的全是数字 - .NET技术 / ASP.NET
- 使用JDK 11在Java字符串上的新方法
- activemq 内存_ActiveMQ:了解内存使用情况
- vue获取tr内td里面所有内容_vue 项目学习
- CCF NOI1002 三角形
- Could not find a version that satisfies the requirement PyQt5
- cors nginx 怎么解决_如何在Nginx代理服务器中启用CORS?
- 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
- 【学习笔记】《光纤传感器振动系统信号解调技术研究--华北电力--控制工程--张**》重点笔记
- 计算机英语实用教程第五版答案,(计算机英语实用教程课后题参考答案.doc
- Python对话框使用
- 制作删不掉的php唯读档,ppt母版logo删除不了怎么办
- java对大陆身份证号码验证
- Teigha 40010 保存设置Wipeout时的边界显示问题
- LJX的校园:体育课
- 1.1 极限的概念【极限】
- 辉芒微单片机的c语言仿真器,辉芒微单片机
- Linux隔离网络,linux – 隔离网络上的单个NTP服务器