Python3 设计模式_工厂模式

来源:互联网 发布:923字刷爆朋友圈 知乎 编辑:程序博客网 时间:2024/06/06 06:45

原文: http://blog.csdn.net/Rozol/article/details/71105633


工厂方法设计模式

# coding=utf-8# factory.py 工厂方法设计模式# 根据传入参数的不同, 而返回对应的对象# 案例:你去一家餐厅,给厨子'番茄'和'鸡蛋',厨子返回给你'番茄炒鸡蛋';给厨子'白糖'和'黄瓜',厨子返回给你'白糖拌黄瓜'class TomatoesAndEgg:    def __init__(self):        self.data = "男士喜欢吃番茄炒蛋"    def getData(self):        return self.dataclass SugarAndCucumber:    def __init__(self):        self.data = 123456    def getData(self):        return self.data# 工厂方法: 根据传入参数的不同, 而返回对应的对象def cook_factory(sex):    if sex == "man":        food = TomatoesAndEgg    elif sex == "woman":        food = SugarAndCucumber    else:        raise ValueError("请出入正确的性别: {}".format(sex))    return food()if __name__ == "__main__":    man = cook_factory("man")    woman = cook_factory("woman")    data_man = man.getData()  # 返回String类型数据    data_woman = woman.getData()  # 返回int类型数据    # getData()返回不同类型的数据, 这在实际开发中是很常见的    print(data_man)  # => 男士喜欢吃番茄炒蛋    print(data_woman)  # => 123456

抽象工厂设计模式

# coding=utf-8# factory_abstract 抽象工厂设计模式# 抽象工厂, 有一组工厂方法, 每个工厂方法生产对应的对象# 案例:你去一家餐厅吃饭, 厨子负责做'番茄炒蛋'和'白糖拌黄瓜'class TomatoesAndEgg:    def __init__(self):        self.data = "番茄炒蛋"    def getData(self):        return self.dataclass SugarAndCucumber:    def __init__(self):        self.data = "白糖拌黄瓜"    def getData(self):        return self.data# 厨子# 抽象工厂(可以有多个), 有一组工厂方法, 每个工厂方法生产对应的对象class CookFactory:    # 生产'番茄炒蛋'的工厂方法    def cook_te(self):        return TomatoesAndEgg()    # 生产'白糖拌黄瓜'的工厂方法    def cook_sc(self):        return SugarAndCucumber()if __name__ == "__main__":    cook = CookFactory()    man = cook.cook_te()    woman = cook.cook_sc()    data_man = man.getData()    data_woman = woman.getData()    print(data_man)  # => 番茄炒蛋    print(data_woman)  # => 白糖拌黄瓜



原创粉丝点击