Python常用设计模式:工厂模式

工厂模式是一个在软件开发中用来创建对象的设计模式。

当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。

设计模式的“工厂”这个概念就是来源于我们现实中的工厂,我们把原材料、图纸等生产资料投入到一个工厂里面,工厂就会给我们输出相应的产品,所以实现工厂方法很简单,一个函数就是一个工厂。

class Car:
    def run(self):
        print("吧里吧里的跑")

    def stop(self):
        print("吧拉吧拉的停")
class BMW(Car):
    def run(self):
        print("宝马---->>驾驾驾。。。。")

    def stop(self):
        print("宝马---->>吁。。。。")

class Fute(Car):
    def run(self):
        print("福特---->>轮胎跑")
    def stop(self):
        print("福特---->>脚刹")

class Phoenix(Car):
    def run(self):
        print("凤凰---->>用脚蹬")
    def stop(self):
        print("凤凰---->>手刹")

class CarFactory:
    """工厂集中管理"""
    def new_car(self,name):
        if name=="BMW":
            bmw = BMW()
            return bmw
        if name=="Phoenix":
            phoenix = Phoenix()
            return phoenix
        if name=="Fute":
            fute = Fute()
            return fute
class CarStore:
    """4s店"""
    def __init__(self,factory):
        self.factory = factory

    def order(self,name):
      """订单"""
      new_car = self.factory.new_car(name)
      return new_car



factory=CarFactory()

car_store = CarStore(factory)

fh = car_store.order("Phoenix")
fh.run()
fh.stop()
工厂模式的优点和应用

工厂模式、抽象工厂模式的优点:
1、工厂模式巨有非常好的封装性,代码结构清晰;在抽象工厂模式中,其结构还可以随着需要进行更深或者更浅的抽象层级调整,非常灵活;
2、屏蔽产品类,使产品的被使用业务场景和产品的功能细节可以分而开发进行,是比较典型的解耦框架。
工厂模式、抽象工厂模式的使用场景:
当系统实例要求比较灵活和可扩展时,可以考虑工厂模式或者抽象工厂模式实现。比如,在通信系统中,高层通信协议会很多样化,同时,上层协议依赖于下层协议,那么就可以对应建立对应层级的抽象工厂,根据不同的“产品需求”去生产定制的实例。

工厂类模式的不足

1、工厂模式相对于直接生成实例过程要复杂一些,所以,在小项目中,可以不使用工厂模式;
2、抽象工厂模式中,产品类的扩展比较麻烦。毕竟,每一个工厂对应每一类产品,产品扩展,就意味着相应的抽象工厂也要扩展。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值