用于加载和保存对象的构造函数或静态方法?

Cam*_*and 2 .net c# architecture design-patterns

我正在尝试决定使用静态方法来加载/保存对象,还是使用构造函数/实例方法.

所以,对于object来说Project,实例版本就是

public Project(path) { // Load project here }
public void Save(path) { // Save project here }
Run Code Online (Sandbox Code Playgroud)

而静态版本将是

public static Project Load(path) { // Load project and return result }
public static void Save(path, proj) { // Save project }
Run Code Online (Sandbox Code Playgroud)

所以,你更喜欢哪一个?

mof*_*dub 9

都不是.支持从域模型中提取持久性逻辑,并进入单独的类层.

(根据ChrisW的回答留下的评论)关于域对象泄露到另一个类的详细信息:如果您的语言允许,您可以通过使用package-privacy/internal访问来限制这些详细信息的可见性.或者,您可以使用DTO方法.