我正在阅读其中陈述的书EMF: Eclipse Modeling Framework:
EMF编程模型强烈鼓励但不要求, 使用工厂来创建对象。而不是简单地使用 用于创建[对象]的新运算符...
为什么鼓励使用工厂而不是new
?
您的答案不一定是EMF特定的,只要它与Java有关。
答案 0 :(得分:7)
您可以阅读Effective Java Item 1:考虑静态工厂方法而不是构造函数。它详细描述了使用工厂方法的优点:
静态工厂方法的一个优点是,与构造函数不同,它们 有名字
静态工厂方法的第二个优点是,与构造函数不同, 每次调用它们时都不需要创建新对象。
静态工厂方法的第三个优点是,与构造函数不同, 他们可以返回其返回类型的任何子类型的对象。
静态工厂方法的第四个优点是它们减少了创建参数化类型实例的冗长程度(自Java 7以来似乎已经过时)
答案 1 :(得分:1)
我同意这里给出的大多数答案,但这些论点通常适用于Java中的每一种情况,但是在EMF的这种特殊情况下还有另外一个原因:EMF有自己的内省机制,例如,用于序列化和反序列化,它不依赖于Java反射。
例如,对于反序列化,它读取XML文件,并使用Ecore模型信息和相应的工厂实例化Java对象。否则就需要使用Java反射。
答案 2 :(得分:0)
这里的答案也不是特定于Java的。
new
答案 3 :(得分:-1)
主要是创建对象的简单性。从工厂调用方法比记住构造函数中每个参数的含义+它使代码更改更容易
更容易