欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計(jì)模式編程中Adapter適配器模式的使用實(shí)例

 更新時(shí)間:2016年03月02日 11:23:42   作者:五岳  
這篇文章主要介紹了Python設(shè)計(jì)模式編程中Adapter適配器模式的使用實(shí)例,一般來說適配器模式可以細(xì)分為類適配器和對象適配器模式,需要的朋友可以參考下

將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
應(yīng)用場景:希望復(fù)用一些現(xiàn)存的類,但是接口又與復(fù)用環(huán)境要求不一致。

模式特點(diǎn):將一個(gè)類的接口轉(zhuǎn)換成為客戶希望的另外一個(gè)接口。

分類:類適配器(通過多重繼承)、對象適配器。

來通過例子說明,下面是用戶通過適配器使用一個(gè)類的方法

class Target:
 def Request():
  print "common request."

class Adaptee(Target):
 def SpecificRequest(self):
  print "specific request."

class Adapter(Target):
 def __init__(self,ada):
  self.adaptee = ada
 def Request(self):
  self.adaptee.SpecificRequest()

if __name__ == "__main__":
 adaptee = Adaptee()
 adapter = Adapter(adaptee)
 adapter.Request()

類圖:

201632112018391.jpg (669×296)

實(shí)例:
我們再來看一個(gè)簡單的Adapter例子

#encoding=utf-8 
# 
#by panda 
#適配器模式 
 
 
def printInfo(info): 
 print unicode(info, 'utf-8').encode('gbk') 
 
#球員類 
class Player(): 
 name = '' 
 def __init__(self,name): 
  self.name = name 
  
 def Attack(self,name): 
  pass 
  
 def Defense(self): 
  pass 
  
#前鋒 
class Forwards(Player): 
 def __init__(self,name): 
  Player.__init__(self,name) 
  
 def Attack(self): 
  printInfo("前鋒%s 進(jìn)攻" % self.name) 
  
 def Defense(self,name): 
  printInfo("前鋒%s 防守" % self.name) 
 
#中鋒(目標(biāo)類) 
class Center(Player): 
 def __init__(self,name): 
  Player.__init__(self,name) 
  
 def Attack(self): 
  printInfo("中鋒%s 進(jìn)攻" % self.name) 
  
 def Defense(self): 
  printInfo("中鋒%s 防守" % self.name) 
  
#后衛(wèi) 
class Guards(Player): 
 def __init__(self,name): 
  Player.__init__(self,name) 
  
 def Attack(self): 
  printInfo("后衛(wèi)%s 進(jìn)攻" % self.name) 
  
 def Defense(self): 
  printInfo("后衛(wèi)%s 防守" % self.name) 
  
#外籍中鋒(待適配類) 
#中鋒 
class ForeignCenter(Player): 
 name = '' 
 def __init__(self,name): 
  Player.__init__(self,name) 
  
 def ForeignAttack(self): 
  printInfo("外籍中鋒%s 進(jìn)攻" % self.name) 
  
 def ForeignDefense(self): 
  printInfo("外籍中鋒%s 防守" % self.name) 
 
 
#翻譯(適配類) 
class Translator(Player): 
 foreignCenter = None 
 def __init__(self,name): 
  self.foreignCenter = ForeignCenter(name) 
  
 def Attack(self): 
  self.foreignCenter.ForeignAttack() 
  
 def Defense(self): 
  self.foreignCenter.ForeignDefense() 
 
 
def clientUI(): 
 b = Forwards('巴蒂爾') 
 m = Guards('麥克格雷迪') 
 ym = Translator('姚明') 
  
 b.Attack() 
 m.Defense() 
 ym.Attack() 
 ym.Defense() 
 return 
 
if __name__ == '__main__': 
 clientUI(); 

相關(guān)文章

最新評論