设计模式一:工厂模式
什么是工厂模式
根据提供的信息,在工厂的处理下,返回给想要的结果。
比如,甲方给工厂提供一个外形要求,及外形是鸭子。工厂里有许许多多的模具,有鸭子,小狗,小猫等等。工厂在接到要求后,根据要求选择出鸭子的模具返回给了甲方。
使用特点
1.请求一个对象,而无需知道这个对象来自哪里,简化对象的创建
2.可以通过工厂模式来对相似的对象创建进行分组
3.可以创建多个工厂,每个工厂负责一个任务
使用场景
1.应用创建的对象代码分布在多个不同的地方,而不是在一个函数/方法中,无法跟踪这些对象
2.需要将对象的创建和使用解耦
3.考虑提高性能和内存使用率,在必要时创建新的对象(直接实例化创建对象会分配额外内存)
实例代码
class MP3:
def __init__(self,filepath):
self.playdata = filepath[:-4]
def play(self):
return self.playdata
class MP4:
def __init__(self,filepath):
self.playdata = filepath[:-4]
def play(self):
return self.playdata
def Play_Factory(filepath):
if filepath[-3:] == 'mp3':
machine = MP3(filepath)
elif filepath[-3:] == 'mp4':
machine = MP4(filepath)
return machine
#对工厂方法进行了包装,添加异常处理
def Play_machine(filepath):
machine = None
try:
machine = Play_Factory(filepath)
except BaseException as ve:
print(ve)
return machine
if __name__ == "__main__":
music = Play_machine('lalalalala.mp3')
data = music.play()
print('music data is {}'.format(data))
move = Play_machine('dadadadadada.mp4')
data = move.play()
print('move data is {}'.format(data))
game = Play_machine('')