这篇文章主要介绍了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设计模式编程之桥接模式的运用相关推荐

  1. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片

    本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...

  2. __init__在python中的用法知乎_python中对_init_的理解及实例解析 python为什么要有一个init函数 知乎...

    Python中"__init__"的意义是什么? Python中__init__的意义依偎着你心跳声如此频繁,就算世界末日小编也会嚣张的笑. 测试人员学python时,应该如何理解 ...

  3. Python爬虫怎么挣钱?解析Python爬虫赚钱方式,轻轻松松月入两万,再也不用为钱发愁啦

    Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想通过自己学到的专业技能赚钱,首先需要掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,可以通过Python爬虫外包项目.整合信 ...

  4. Python爬虫怎么挣钱?解析Python爬虫赚钱方式

    Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想过自己学到的专业技能赚钱,首先需要你能够数量掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,Python爬虫可以通过Pyth ...

  5. MVP 模式实例解析

    MVP 模式实例解析 引言 可能有的朋友已经看过我翻译的Jean-Paul Boodhoo的 模型-视图-提供器 模式 一文了(如果没有,建议你先看下再看这篇文章,毕竟这两篇是紧密联系的).在那篇文章 ...

  6. 简易理解设计模式之:桥接模式——穿衣服经典案例2

    介绍: 桥接模式属于结构型模式.它的定义为:将抽象部分与实现部分分离,使它们都可以独立的变化. 类图: Abstraction(抽象化角色):抽象部分,保持对实现部分对象的引用,抽象部分中的方法需要调 ...

  7. Linux中三种网络模式是什么意思——bridged(一桥接模式)

    原文链接:http://www.linuxidc.com/Linux/2016-09/135521.htm 由于Linux目前很热门,越来越多的人在学习Linux,但是买一台服务放家里来学习,实在是很 ...

  8. php 线程锁,如何使用python线程锁(实例解析)

    在这篇文章之中我们来了解一下什么是python线程锁.了解一下python线程锁的相关知识,以及线程锁在python编程之中能起到什么样的作用. 线程锁(互斥锁Mutex) 一个进程下可以启动多个线程 ...

  9. python中返回上一步操作_通过实例解析Python文件操作实现步骤

    当程序运行时,变量是保存数据的好方法,但变量.序列以及对象中存储的数据是暂时的,程序结束后就会丢失,如果希望程序结束后数据仍然保持,就需要将数据保存到文件中. Python 提供了内置的文件对象,以及 ...

最新文章

  1. ubuntu 14.04 双显卡安装NVIDIA GPU驱动+CUDA+编译配置caffe
  2. DM8168 编译filesystem步骤
  3. 怎样验证TextBox输入的全是数字 - .NET技术 / ASP.NET
  4. 使用JDK 11在Java字符串上的新方法
  5. activemq 内存_ActiveMQ:了解内存使用情况
  6. vue获取tr内td里面所有内容_vue 项目学习
  7. CCF NOI1002 三角形
  8. Could not find a version that satisfies the requirement PyQt5
  9. cors nginx 怎么解决_如何在Nginx代理服务器中启用CORS?
  10. 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
  11. 【学习笔记】《光纤传感器振动系统信号解调技术研究--华北电力--控制工程--张**》重点笔记
  12. 计算机英语实用教程第五版答案,(计算机英语实用教程课后题参考答案.doc
  13. Python对话框使用
  14. 制作删不掉的php唯读档,ppt母版logo删除不了怎么办
  15. java对大陆身份证号码验证
  16. Teigha 40010 保存设置Wipeout时的边界显示问题
  17. LJX的校园:体育课
  18. 1.1 极限的概念【极限】
  19. 辉芒微单片机的c语言仿真器,辉芒微单片机
  20. Linux隔离网络,linux – 隔离网络上的单个NTP服务器

热门文章

  1. 每秒100W请求,12306秒杀业务,架构如何优化?
  2. Access 字段拼接(UPDATE 数据追加)
  3. 社团的CTF逆向题WriteUp
  4. elasticsearch的索引自动清理及自定义清理
  5. 银行、航空软件结构图
  6. Android layout布局属性、标签属性总结大全
  7. 使用 git 下载linux 源码
  8. 后台提示云提醒未激活 点击激活删除方法
  9. 在MVVM实践中的Command与CommandParameter的使用
  10. 专访盖茨:我的梦想是实现生命价值平等[转]