我想知道如何编写这种类型的构造函数:
Person p = Person.CreateWithName("pedro");
Person p1 = Person.CreateEmpty();
让每个构造函数的代码分开。
答案 0 :(得分:6)
那些是所谓的工厂方法,技术上是类(人)上的静态方法,然后在类(Person.Create)上调用。
从技术上讲,他们在内部使用new创建Person - 但它可以使用PRIVATE CONSTRUCTOR。
答案 1 :(得分:5)
您只需在该类中创建一个静态方法,即
class Person {
public Person(string name) {
//Constructor logic
}
public static Person CreatePerson() {
return new Person(string.Empty);
}
}
答案 2 :(得分:2)
您可以像这样实现:
public class Person {
// Private (or protected) Constructor to ensure using factory methods
private Person(String name) {
if (null == name)
name = "SomeDefaultValue";
//TODO: put relevant code here
}
// Factory method, please notice "static"
public static Person CreateWithName(String name) {
return new Person(name);
}
// Factory method, please notice "static"
public static Person CreateEmpty() {
return new Person(null);
}
}