例如:http://www.tutorialspoint.com/design_pattern/factory_pattern.htm

如果我更改了抽象类Shape的接口(interface)形状,请创建具体的类以扩展Shape并使Shape工厂返回Shape抽象类类型的对象。仍将是一种工厂模式吗?

最佳答案

我会同意的。
让我们看一下Factory方法模式的定义:

该模式背后的动机是使用对象将创建对象与客户端分开。客户应向工厂提供规范,但工厂将抽象出如何构建对象的详细信息。
如果这是接口(interface)或抽象类,则是针对具体情况的实现细节,只要您对工厂的实现可以让您获得模式背后的动力。
如果以下任何一种情况适用于您的情况,请考虑使用抽象类:

如果以下任何一种情况适用于您的情况,请考虑使用接口(interface):

在某些实现中,使用抽象类而不是工厂创建的产品的接口(interface)甚至更有意义。如果所有产品之间都有一组共享的功能/行为,那么将这些功能/行为放到基本抽象类中是很有意义的。即使产品是从不同的工厂制造的,这也可能适用。
归结为:您是否愿意,引入耦合是否有意义
在产品之间还是没有?
最后,客户将获得相同的结果-根据规范构建产品,并提取构造细节。

关于java - 如果我在实现工厂模式时使用抽象类而不是接口(interface)。还会是工厂模式吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31477625/

10-10 12:57