文心一言的介绍能说明问题,引用如下:
简单工厂模式和工厂方法模式的主要区别如下: 结构上的区别: 在简单工厂模式中,通常只有一个工厂类来负责所有产品的创建。 而在工厂方法模式中,有一个抽象的工厂接口或抽象类, 多个具体的工厂类继承或实现这个接口或抽象类,每个具体的工厂类负责创建一种产品。 对扩展的支持: 简单工厂模式在增加新产品时需要修改工厂类的代码,这违反了开闭原则。 而工厂方法模式在增加新产品时,只需要增加新的具体产品类和对应的具体工厂类, 不需要修改原有的代码,满足了开闭原则。 依赖关系的区别: 简单工厂模式中,客户端直接依赖于工厂类。 而在工厂方法模式中,客户端依赖于抽象的工厂接口或抽象类,而不直接依赖于具体的工厂类, 这样有利于代码的解耦和扩展。 总的来说,工厂方法模式相比简单工厂模式提供了更好的扩展性和遵循了设计原则, 如开闭原则,但也需要更多的类和接口,因此在选择使用哪种模式时,需要根据实际需求进行权衡。
勇哥的理解 :
工厂方法相对于简单工厂的好处是依据依赖反转原则, 把决定实始化哪个工厂的工作交给了客户端去进行,从而保证工厂自身保持了开闭原则 工厂方法模式和简单工厂模式的主要区别在于对扩展的开放性和对修改的封闭性。 在这个理解中,你已经明确指出了工厂方法模式通过依赖反转原则, 将实例化哪个工厂的决定权交给了客户端,从而保证了工厂自身遵循了开闭原则。 具体来说,工厂方法模式定义了一个用于创建对象的接口,但让子类决定将哪一个类实例化。 这样一来,工厂方法模式将对象的创建与使用分离,使用者不需要关心对象的创建细节, 只需要通过工厂来获取对象即可。而当需要增加新的产品时, 只需要增加新的具体产品类和对应的具体工厂类即可, 原有的代码不需要进行修改,满足了开闭原则。 相比之下,简单工厂模式虽然也实现了对象的创建和使用分离, 但当需要增加新的产品时,就需要修改工厂类的代码,违反了开闭原则。因 此,工厂方法模式在灵活性和扩展性上优于简单工厂模式。
下图是简单工厂
下图是工厂模式
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

本帖最后由 勇哥,很想停止 于 2023-11-23 10:27:41 编辑 
