国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

實例解析Python設計模式編程之橋接模式的運用

2019-11-25 16:54:15
字體:
來源:轉載
供稿:網友

我們先來看一個例子:

#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();

可以總結出類圖是這樣的: 

201632114505183.gif (678×256)

所以,橋接模式的概念在于將系統抽象部分與它的實現部分分離,使它們可以獨立地變化。
由于目標系統存在多個角度的分類,每一種分類都會有多種變化,那么就可以把多角度分離出來,讓它們獨立變化,減少它們之間的耦合。

下面我們再來看一個實例:

基本原理請參考相關書籍,這里直接給實例

假期旅游 從目的地角度可以分為 上海和大連,從方式角度可以分為跟團和獨體

橋接模式把這兩種分類連接起來可以進行選擇。

類圖:

201632114527959.jpg (614×251)

# -*- 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()

運行結果

201632114549246.jpg (201×60)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿拉善左旗| 乐平市| 方山县| 濮阳县| 凤冈县| 句容市| 凤凰县| 璧山县| 九江市| 南澳县| 时尚| 集贤县| 观塘区| 张家港市| 亚东县| 阿拉善盟| 辽中县| 牙克石市| 建昌县| 康马县| 兴宁市| 共和县| 新密市| 漯河市| 密云县| 五指山市| 信丰县| 永昌县| 奉贤区| 黄山市| 全州县| 平泉县| 苏尼特右旗| 梓潼县| 马龙县| 天门市| 苏尼特右旗| 泰来县| 山西省| 乌恰县| 五河县|