据我了解,工厂设计模式用于创建对象而不是构造函数
在上一个问题中,我解释了我的情况:
我有一个复杂的网络,表示为超图超图顶点来自各种类型:图像,标签....
我应该创建数千个顶点,手动创建它会很困难!所以我认为在这种情况下工厂模式可能会对我有所帮助
我使用 yUML 绘制了两个可能的图表,但我无法确定最适合我的情况
据我了解,工厂设计模式用于创建对象而不是构造函数
在上一个问题中,我解释了我的情况:
我有一个复杂的网络,表示为超图超图顶点来自各种类型:图像,标签....
我应该创建数千个顶点,手动创建它会很困难!所以我认为在这种情况下工厂模式可能会对我有所帮助
我使用 yUML 绘制了两个可能的图表,但我无法确定最适合我的情况
实际上,两者都描述了工厂方法模式。
但是,正如我们所说的多工厂,第一个映像是一种更好、耦合更少、更可扩展、更易于维护的方法。
AbstractVertexFactory
只是,在第一张图中,由于您有一个很小的图表,最好从到放置一条虚线Vertex
,因为这些类之间存在依赖关系。
此外,第二张图片缺少所有虚线依赖线。这并没有使这个图不正确,它仍然描绘了工厂方法模式,唯一的缺点是没有提到的线条更加混乱。
为什么第一个比第二个更好的解释:
TagVertex
,ImageFactory
(以及可能的其他工厂)的客户不会受到影响。Vertex
在您的场景中)类,则不会影响其他工厂的客户。您也可以自由添加工厂,而无需更改现有代码。图一是正确的选择。
抽象工厂用于创建相关或依赖对象的系列。在这种情况下,Abstract veretx factory(通过使用 Tag 或 Image factory 具体类)将分别创建具体产品(Tag Vertex 和 Image vertex)。
在第二张图的情况下,产品和抽象工厂之间没有关系。抽象工厂应该创建具体产品(在这种情况下,通过使用具体工厂类 Image Vertex 和 Tag Vertex)