工厂模式有3种,优点也各不相同:
1.简单工厂模式可以决定在什么时候创建哪一个产品类的实例
2.工厂方法模式有非常良好的扩展性
3.抽象工厂模式降低了模块间的耦合性,提高了团队开发效率。
工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅"消费"产品。
简单工厂模式通过这种做法实现了对责任的分割,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。通过它,外界与具体类隔离开来,偶合性低。明确区分了各自的职责和权力,有利于整个软件体系结构的优化。
工厂方法模式每个具体工厂类只完成单一任务,代码简洁。工厂方法模式完全满足OCP,即它有非常良好的扩展性。
抽象工厂模式主要在于应对“新系列”的需求变化。
它只需改变具体的工厂即可使用不同的产品配置,这是因为一个抽象工厂创建了一个完整的产品系列,所以整个产品系列会立刻改变。它有利于产品的一致性。当一个系列的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象,这一点很重要,而抽象工厂很容易实现这一点。抽象工厂模式有助于这样的团队的分工,降低了模块间的耦合性,提高了团队开发效率。
该模式不属于GoF列出的23种模式之一,但它确是学习其他几个工厂模式的基础,也是最容易的。
它实现了创建对象和使用对象分离的原则,由工厂类来负责对象的创建。比如,一个形状Shape抽象类,它是其他具体形状类的父类。
该模式存在缺陷:当有新的产品(如具体形状Heart)需要添加时,不得不修改工厂类的源代码,这违背了设计模式的开闭原则(有关开闭原则请读者自行了解)。
这是解决简单工厂模式缺陷的升级模式。
当类的数量庞大时,可以给每一个类构建对应的工厂类,调用者不必考虑类的创建而只用来配置和使用类的对象。
工厂方法模式在具体的工厂类中也可以提供多种方法来初始化创建类的实例,调用者只需传入需要的参数即可。每个具体的工厂类对应具体的产品类,都实现了一个抽象工厂接口和抽象产品接口,因此此模式也称多态工厂模式。
缺点:当类过多时势必引起类文件的臃肿,增加了代码的开销。所以,抽象工厂模式随之出现了。
可以创建一系列相关联的产品,而不是对每一个产品都对应一个工厂类。
它与工厂方法模式的区别在于:工厂方法对每一个产品都提供一个工厂类,而抽象工厂模式统一为相关联的产品(一个产品家族,如某品牌制作的电视、电脑等;某样式库下的按钮、文本框等)提供一个具体工厂类,在此类中定义用来创建各个具体产品的各个方法,这样一个工厂类可以创建一个产品族(包含多个相关联产品)的对象,极大减少了类的数量。
通过上述介绍,相信大家对工厂模式的好处已经有所了解,大家如果对此比较感兴趣,想了解更多相关知识,不妨俩关注一下极悦的Java设计模式技术文档,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习