策略模式:定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换,使算法可以独立于使用于它的用户而变化。
from abc import ABCMeta,abstractmethod
#引用ABCMeta和abstractmethod来定义抽象类和抽象方法
class IVehicle(metaclass=ABCMeta):
@abstractmethod
def running(self):
pass
class ShareBike(IVehicle):
def running(self):
print("共享单车方便又快捷",end='')
class Bus(IVehicle):
def running(self):
print("公共汽车可以直接到达",end='')
class Subway(IVehicle):
def running(self):
print("地铁真方便",end='')
class Classmate:
def __init__(self,name,vehicle):
self.__name = name
self.__vehicle = vehicle
def comingToDinner(self):
print(self.__name + " " ,end='')
self.__vehicle.running()
print("来聚餐")
def test():
bike = ShareBike()
tom = Classmate("Tom",bike);
tom.comingToDinner()
bus = Bus()
jeery = Classmate("Jeery", bus);
jeery.comingToDinner()
subway = Subway()
kate = Classmate("Kate", subway);
kate.comingToDinner()
test()
运行结果:
Tom 共享单车方便又快捷来聚餐
Jeery 公共汽车可以直接到达来聚餐
Kate 地铁真方便来聚餐
aaa