一、实例类
定义一个父类 Dog,三个子类 Erha、Samoye、Tugou;
class Dog:
def walk(self):
pass
def run(self):
pass
def bark(self, msg=''):
pass
class Erha(Dog):
def walk(self):
print('二哈 走路 ...')
def run(self):
print('二哈 跑步 ...')
def bark(self, msg=''):
print(msg + '二哈 狂吠 ...')
class Samoye(Dog):
def walk(self):
print('萨摩耶 走路 ...')
def run(self):
print('萨摩耶 跑步 ...')
def bark(self, msg=''):
print(msg + '萨摩耶 狂吠 ...')
class Tugou(Dog):
def walk(self):
print('土狗 走路 ...')
def run(self):
print('土狗 跑步 ...')
def bark(self, msg=''):
print(msg + '土狗 狂吠 ...')
二、工厂模式
class DogFactory:
def choose_dog(self, type):
if type == 'e':
dog = Erha()
elif type == 's':
dog = Samoye()
else:
dog = Tugou()
return dog
三、策略模式
class Strategy:
def __init__(self, dog):
self.dog = dog
def set_strategy(self, dog):
self.dog = dog
def walk(self):
self.dog.walk()
def run(self):
self.dog.run()
def bark(self):
self.dog.bark()
strategy = Strategy(Erha())
strategy.walk()
strategy.set_strategy(Samoye())
strategy.bark()
二哈 走路 ...
萨摩耶 狂吠 ...
四、建造者模式
class Director:
def __init__(self, dog):
self.dog = dog
def play(self):
self.dog.walk()
self.dog.run()
self.dog.bark()
Director(Erha()).play()
二哈 走路 ...
二哈 跑步 ...
二哈 狂吠 ...
五、观察者模式
class Master:
def __init__(self):
self.dogs = []
def register(self, dog):
if not dog in self.dogs:
self.dogs.append(dog)
def unregister(self, dog):
self.dogs.remove(dog)
def notify(self, order):
for dog in self.dogs:
dog.bark(order)
master = Master()
master.register(Erha())
master.register(Tugou())
master.register(Samoye())
master.notify('有美女,')
有美女,二哈 狂吠 ...
有美女,土狗 狂吠 ...
有美女,萨摩耶 狂吠 ...