策略模式:定義一系列算法,將每個算法都封裝起來,並且使他們之間可以相互替換,使算法可以獨立於使用於它的用戶而變化。
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