简单工厂模式uml uml中的四种关系

2025-01-2108:06:43销售经验0

前言

本文将详细探讨创建型模式,主要针对解决Java对象的创建问题

工厂模式简介

在面向对象的编程中,通过继承和多态的概念实现了父类与子类之间的(is-A)关系,进而实现子类的多态性。这种实现方式在某些情况下存在一定的问题。

例如,当需要实例化Verhicle类的Car或Truck子类时,若子类复写了父类的方法,则每个子类实例化时都需要调用相应的构造器

问题所在

  1. 缺乏统一性操作:子类复写父类方法时,需要针对每个子类使用不同的构造器,这降低了操作的统一性。
  2. 高耦合度:子类与父类之间的依赖关系明显,导致耦合度高。
  3. 违反开闭原则:这既违反了父类的开闭原则,也违反了子类的单一职责原则。

为了解决这些问题,简单工厂模式应运而生,它实现了逻辑的封装,使用公共的工厂类来统一创建对象实例。

简单工厂模式详解

  • 简单工厂模式实现的三种方式之一是静态工厂模式,它使用反射机制进行类注册,通过newInstance方法进行实例化。

静态工厂模式的解决方式

通过创建一个单独的verhicle简单工厂类,该类内置枚举储存所有需要创建实例的子类。工厂类提供一个统一的create(type)方法,根据传入参数的类型来按需创建实例。

优势与劣势分析

使用反射机制的优势与劣势

使用反射机制可以解决静态工厂模式开闭原则的问题,将注册和创建实例分开实现。反射机制会影响程序性能。

改进的简单工厂模式

一种改进方式是避免使用反射机制,提高性能。可以通过基类中创建一个抽象方法,要求子类全部复写该方法,方法体中创建子类对象,并利用Map集合存储已经创建的子类实例。

工厂方法模式与抽象工厂模式

工厂方法模式通过服务端将产品接口化,解决产品的拓展问题。而抽象工厂模式则在工厂方法模式的基础上进一步优化,减少工厂类的数量,避免冗余问题。

总结

通过以上模式的探讨,我们可以看到,不同的创建型模式都有其优势和劣势。在选择使用时,需要根据具体场景和需求进行权衡。希望这篇文章能对你有所帮助。

如果你觉得这篇内容对你有帮助,请考虑以下几点:

  • 版权说明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。