大话设计模式(Python版)--适配器模式

来源:互联网 发布:淘宝店有多少家 编辑:程序博客网 时间:2024/06/05 17:31

适配器模式--v1

#!/usr/bin/env pythonfrom abc import abstractmethodclass Target:    @abstractmethod    def Request(self):        print("normal request")class Adaptee:    def SpecificRequest(self):        print("special request")class Adapter(Target):    def __init__(self):        self.__adaptee = Adaptee()    def Request(self):        self.__adaptee.SpecificRequest()def main():    target = Adapter()    target.Request()if __name__ == '__main__':    main()

篮球翻译适配器 v2

#!/usr/bin/env pythonfrom abc import abstractmethodclass Player:    def __init__(self,name):        self._name = name    @abstractmethod    def Attack(self):        pass    @abstractmethod    def Defense(self):        passclass Forwards(Player):    def __init__(self, name):        super(Forwards,self).__init__(name)    def Attack(self):        print("前锋",self._name,"进攻")    def Defense(self):        print("前锋",self._name,"防守")class Center(Player):    def __init__(self, name):        super(Center,self).__init__(name)    def Attack(self):        print("中锋",self._name,"进攻")    def Defense(self):        print("中锋",self._name,"防守")        class Guards(Player):    def __init__(self, name):        super(Guards,self).__init__(name)    def Attack(self):        print("后卫",self._name,"进攻")    def Defense(self):        print("后卫",self._name,"防守")def main():    Tom = Forwards('Tom')    Tom.Attack()    Joe = Guards('Joe')    Joe.Attack()    Fred = Center('Fred')    Fred.Attack()    Fred.Defense()if __name__ == '__main__':    main()

篮球适配器模式 v3

#!/usr/bin/env pythonfrom abc import abstractmethodclass Player:    def __init__(self,name):        self._name = name    @abstractmethod    def Attack(self):        pass    @abstractmethod    def Defense(self):        passclass Forwards(Player):    def __init__(self, name):        super(Forwards,self).__init__(name)    def Attack(self):        print("前锋",self._name,"进攻")    def Defense(self):        print("前锋",self._name,"防守")class Center(Player):    def __init__(self, name):        super(Center,self).__init__(name)    def Attack(self):        print("中锋",self._name,"进攻")    def Defense(self):        print("中锋",self._name,"防守")        class Guards(Player):    def __init__(self, name):        super(Guards,self).__init__(name)    def Attack(self):        print("后卫",self._name,"进攻")    def Defense(self):        print("后卫",self._name,"防守")        class ForeignCenter(Player):    @property    def Name(self):        return self._name    @Name.setter    def Name(self, name):        self._name = name    def Attack(self):        print("外籍中锋",self._name,"进攻")    def Defense(self):        print("外籍中锋",self._name,"防守")class Translator(Player):    def __init__(self,name):        super(Translator,self).__init__(name)        self.__fc = ForeignCenter(name)        self.__fc.Name = name    def Attack(self):        self.__fc.Attack()    def Defense(self):        self.__fc.Defense()def main():    Tom = Forwards('Tom')    Tom.Attack()    Joe = Guards('Joe')    Joe.Attack()    Fred = Translator('Fred')    Fred.Attack()    Fred.Defense()            if __name__ == '__main__':    main()


0 0
原创粉丝点击