• 适配器模式(python)


    适配器模式将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    应用场景:希望复用一些现存的类,但是接口又与复用环境要求不一致。

    分类:类适配器(通过多重继承)、对象适配器。

    [python] view plaincopy
    1. #encoding=utf-8  
    2. #  
    3. #by panda  
    4. #适配器模式  
    5.   
    6.   
    7. def printInfo(info):  
    8.     print unicode(info, 'utf-8').encode('gbk')  
    9.   
    10. #球员类  
    11. class Player():  
    12.     name = ''  
    13.     def __init__(self,name):  
    14.         self.name = name  
    15.       
    16.     def Attack(self,name):  
    17.         pass  
    18.       
    19.     def Defense(self):  
    20.         pass  
    21.       
    22. #前锋  
    23. class Forwards(Player):  
    24.     def __init__(self,name):  
    25.         Player.__init__(self,name)  
    26.       
    27.     def Attack(self):  
    28.         printInfo("前锋%s 进攻" % self.name)  
    29.       
    30.     def Defense(self,name):  
    31.         printInfo("前锋%s 防守" % self.name)  
    32.   
    33. #中锋(目标类)  
    34. class Center(Player):  
    35.    def __init__(self,name):  
    36.        Player.__init__(self,name)  
    37.      
    38.    def Attack(self):  
    39.        printInfo("中锋%s 进攻" % self.name)  
    40.      
    41.    def Defense(self):  
    42.        printInfo("中锋%s 防守" % self.name)  
    43.      
    44. #后卫  
    45. class Guards(Player):  
    46.    def __init__(self,name):  
    47.        Player.__init__(self,name)  
    48.      
    49.    def Attack(self):  
    50.        printInfo("后卫%s 进攻" % self.name)  
    51.      
    52.    def Defense(self):  
    53.        printInfo("后卫%s 防守" % self.name)  
    54.       
    55. #外籍中锋(待适配类)  
    56. #中锋  
    57. class ForeignCenter(Player):  
    58.     name = ''  
    59.     def __init__(self,name):  
    60.         Player.__init__(self,name)  
    61.      
    62.     def ForeignAttack(self):  
    63.         printInfo("外籍中锋%s 进攻" % self.name)  
    64.      
    65.     def ForeignDefense(self):  
    66.         printInfo("外籍中锋%s 防守" % self.name)  
    67.   
    68.   
    69. #翻译(适配类)  
    70. class Translator(Player):  
    71.     foreignCenter = None  
    72.     def __init__(self,name):  
    73.         self.foreignCenter = ForeignCenter(name)  
    74.      
    75.     def Attack(self):  
    76.         self.foreignCenter.ForeignAttack()  
    77.      
    78.     def Defense(self):  
    79.         self.foreignCenter.ForeignDefense()  
    80.   
    81.   
    82. def clientUI():  
    83.     b = Forwards('巴蒂尔')  
    84.     m = Guards('麦克格雷迪')  
    85.     ym = Translator('姚明')  
    86.       
    87.     b.Attack()  
    88.     m.Defense()  
    89.     ym.Attack()  
    90.     ym.Defense()  
    91.     return  
    92.   
    93. if __name__ == '__main__':  
    94.     clientUI();  


    类图

     
  • 相关阅读:
    SVN 的基本用法
    Git的基本用法
    一般情况下设计应遵循的原则
    设置默认以管理员运行的WinForm
    为 dll (类库) 解决方案添加测试项目
    C# WinForms跨线程更新 UI
    Android 创建 SO 文件
    SQL之case when then用法
    SQL LIKE 通配符随笔
    document.all.item作用
  • 原文地址:https://www.cnblogs.com/lddhbu/p/2908263.html
Copyright © 2020-2023  润新知