Python设计模式:工厂模式

设计模式一:工厂模式

什么是工厂模式

根据提供的信息,在工厂的处理下,返回给想要的结果。
比如,甲方给工厂提供一个外形要求,及外形是鸭子。工厂里有许许多多的模具,有鸭子,小狗,小猫等等。工厂在接到要求后,根据要求选择出鸭子的模具返回给了甲方。

使用特点

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('dadadadadada.exe')

版权声明:本文为youngdianfeng原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。