实例解析Python设计模式编程之桥接模式的运用

实例解析Python设计模式编程之桥接模式的运用,第1张

概述我们先来看一个例子:#encoding=utf-8##bypanda#桥接模式defprintInfo(info):printunicode(info,\'utf-8\').encode(\'gbk\')

我们先来看一个例子:

#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__ import divisionfrom __future__ import print_functionfrom __future__ import unicode_literalsfrom future_builtins import *  class TravelForm(object):  """This class defines the interface for implementation classes.  """  def __init__(self,form="stay at home"):    self.form=form    pass  def GetForm(self):    return self.form    pass  passclass Group(TravelForm):  """This class implements the Implementor interface and defines its concrete  implementation.  """  def __init__(self,form="by group"):    super(Group,self).__init__(form)        pass  passclass Independent(TravelForm):  """This class implements the Implementor interface and defines its concrete  implementation.  """  def __init__(self,form="by myself"):    super(Independent,self).__init__(form)    passclass Destination(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  def GetInfo(self):    # imp->Operation();    return print(self.info + " " +self.form.GetForm())    pass  def SetForm(self,form):    self.form=form    passclass dalian(Destination):  """This class extends the interface defined by Abstraction.  """  def __init__(self,info="Go to dalian "):    super(dalian,self).__init__(info)    passclass ShangHai(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设计模式编程之桥接模式的运用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1204574.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存