日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[Python设计模式] 第17章 程序中的翻译官——适配器模式

發布時間:2023/11/30 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Python设计模式] 第17章 程序中的翻译官——适配器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

github地址:https://github.com/cheesezh/python_design_patterns

適配器模式

適配器模式,將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作[DP]。

當系統的數據和行為都正確,但是接口不符時,我們應該考慮使用適配器模式,目的就是使控制范圍之外的一個原有對象與某個接口匹配。適配器模式主要應用于希望復用一些現存的類,但是接口又與復用環境要求不一致的情況。

class Target():"""Target類,這是客戶所期待的接口。可以是具體或抽象的類,也可以是接口。"""def request(self):print("普通請求")class Adaptee():"""需要適配的類"""def specific_request(self):print("特殊請求")class Adapter(Target):"""適配器,通過內部包裝一個Adaptee對象,把源接口轉換成目標接口"""def __init__(self):self.adaptee = Adaptee()def request(self):self.adaptee.specific_request()def main():target = Adapter()target.request()main() 特殊請求

何時使用適配器模式?

想使用一個已經存在的類,但如果它的接口,也就是它的方法和你的要求不想同時,就應該考慮使用適配器模式。

對于公司內部獨立開發的系統,類和方法名的規范應當在設計之初就規定好,當接口不相同時,首先不應該考慮使用適配器,而是應該考慮通過重構統一接口。

只有在雙方都不太容易修改的時候再使用適配器模式。

但是如果設計之初,我們準備使用第三方開發組件,而這個組件的接口于我們自己的系統接口是不相同的,而我們也完全沒有必要為了迎合它而改動自己的接口,此時盡管在開發的設計階段,也就是可以考慮用適配器模式來解決接口不同的問題。

題目

用程序模擬姚明到國外打NBA初期依賴翻譯的場景。

from abc import ABCMeta, abstractmethodclass Player():__metaclass__ = ABCMetadef __init__(self, name):self.name = name@abstractmethoddef attack(self):pass@abstractmethoddef defense(self):passclass Forwards(Player):def attack(self):print("Forward {} attack".format(self.name))def defense(self):print("Forward {} defense".format(self.name))class Guards(Player):def attack(self):print("Guards {} attack".format(self.name))def defense(self):print("Guards {} defense".format(self.name))class ForeignCenter():def __init__(self, name):self.name = namedef jingong(self):print("Center {} jingong".format(self.name))def fangshou(self):print("Center {} fangshou".format(self.name))class Translator(Player):def __init__(self, name):self.foreign_center = ForeignCenter(name)def attack(self):self.foreign_center.jingong()def defense(self):self.foreign_center.fangshou()forwards = Forwards("FFF") forwards.attack()guards = Guards("GGG") guards.defense()center = Translator("CCC") center.attack() center.defense() Forward FFF attack Guards GGG defense Center CCC jingong Center CCC fangshou

轉載于:https://www.cnblogs.com/CheeseZH/p/9458707.html

總結

以上是生活随笔為你收集整理的[Python设计模式] 第17章 程序中的翻译官——适配器模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。