三种工厂模式的优劣比较

3中工厂模式的比较

比较对象:
简单工厂模式
工厂方法模式
抽象工厂模式



概念解释:

简单工厂模式: 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

工厂方法模式:工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

抽象工厂模式:抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。


3种工厂模式之间的比较:

    在简单工厂模式中,一个工厂类负责所有产品对象的创建,这个工厂类的职责大大增加,可能客户端对于某些产品的创建方式会有不同的要求,这样的话,就要不断的修改工厂类,增加相应的判断逻辑,不利于后期的代码维护。
    另外,由于简单工厂模式使用静态方法创建,这就导致静态方法无法被继承(All Languages)

    所以,简单工厂模式适用于创建的对象比较少或简单的情况。

    在工厂方法模式中,一个具体的工厂类负责创建一个单独的产品,如果有新的产品加进来,只需要增加一个具体的创建产品工厂类和具体的产品类就可以了,不会影响到已有的其他代码,代码量也不会变大,后期维护更加容易,增加了系统的可扩展性。
但是工厂方法模式无法体现产品之间的关系,如果有两个不同的产品需要创建,就需要两个不同的工厂类,即使这两个产品有某钟必要的联系,也还是需要两个不同的工厂类。

    在抽象工厂模式中,一个具体的工厂类负责创建一系列相互关联的产品,当一系列相互关联的产品被设计到一个工厂类里后,客户端的调用变得非常简单;如果要更换这一系列的产品,只需要更换一个工厂类即可,但零件之间的组装如果放到客户端,则客户端变得非常臃肿,如果把零件之间的组装放在工厂类里,则又违反了工厂类单一职责的原则,使得工厂类既要负责对象的创建,又要负责产品的组装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值