适配器模式--v1
#!/usr/bin/env python
from abc import abstractmethod
class 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 python
from abc import abstractmethod
class Player:
def __init__(self,name):
self._name = name
@abstractmethod
def Attack(self):
pass
@abstractmethod
def Defense(self):
pass
class 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 python
from abc import abstractmethod
class Player:
def __init__(self,name):
self._name = name
@abstractmethod
def Attack(self):
pass
@abstractmethod
def Defense(self):
pass
class 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()