您认为在良好的编码方面哪个更好。
当我创建一个对象时,我将使用new关键字来创建该类的实例。
var objA = new A()
如果我通过在A类中创建静态方法名称CreateA来创建对象,并通过调用CreateNewA或CreateInstance而不是新的A()来创建A的对象。
var objA = A.CreateNewA() instead of var objA = new A().
A.CreateNewA()会使代码更具可读性。这样做的缺点是我必须创建一个名为CreateNewA的静态方法。
答案 0 :(得分:0)
我认为A.CreateNewA()不需要。
使用“new”关键字创建新实例更易读,更易于理解。
使用“new”关键字也允许我们将初始值传递给构造函数类,例如,
const studentA = new Student('firstname', 'lastname')
答案 1 :(得分:0)
正如其他人已在评论中提到的那样,您在第二个代码示例中显示的是一个众所周知的设计模式,称为“工厂方法”。
在您的具体示例中,与使用new
直接调用构造函数相比,它没有任何明显的好处。你仍然需要一个构造函数,你只需要在静态方法中调用它,你就可以将其设置为私有。
如果您不知道要在编译时创建的对象的类,则工厂方法确实有意义。与构造函数不同,工厂方法不仅可以返回类A
的对象,还可以返回从A
派生的任何类的对象。
使用工厂方法的主要原因是将对象创建与其余程序逻辑分开,这有利于分离关注点。当然,这是以必须编写(和读取)其他代码为代价的。