我有一个用数据填充对象的工厂类。我想从对象实现保存,但不想用 db 填充对象 - 让创建类的工厂也保存数据是愚蠢的吗?
即:在我的对象上的 .Save() 方法中,我将调用 Factory.Save(myObject);
工厂类是一种有助于创建新对象的创建模式。
有多种模式可以处理持久对象,其中一种是数据映射器 http://martinfowler.com/eaaCatalog/dataMapper.html
这通常与 Repository http://martinfowler.com/eaaCatalog/repository.html一起使用
您可以使用这些模式将数据库从您的域/业务对象中抽象出来,并从您的应用程序中访问它们以查询和保存对象。
所以数据映射器/存储库负责持久性的两个方面(从数据库填充,并保存回数据库)。
不,这根本不傻,事实上,每个人都应该这样做。业务对象不应包含任何持久性逻辑。
顺便说一句,如果您使用的是 C# 3.0,那么您甚至可能不会打扰 Factory 类。只需创建扩展方法。这样,您仍然可以将持久性代码与业务对象隔离,并且仍然可以调用 myObject.Save()。