【问题标题】:Factory Class - Save Objects工厂类 - 保存对象
【发布时间】:2008-10-10 01:18:09
【问题描述】:

我有一个用数据填充对象的工厂类。我想从对象实现保存,但不想用 db 填充对象 - 让创建类的工厂也保存数据是愚蠢的吗?

即:在我的对象上的 .Save() 方法中,我将调用 Factory.Save(myObject);

【问题讨论】:

    标签: c# factory


    【解决方案1】:

    工厂类是一种有助于创建新对象的创建模式。

    处理持久化对象的模式有很多种,其中一种是数据映射器 http://martinfowler.com/eaaCatalog/dataMapper.html

    这通常与 Repository 一起使用 http://martinfowler.com/eaaCatalog/repository.html

    您可以使用这些模式将数据库从您的域/业务对象中抽象出来,并从您的应用程序中访问它们以查询和保存对象。

    因此,数据映射器/存储库负责持久性的两个方面(从数据库填充和保存回数据库)。

    【讨论】:

      【解决方案2】:

      如果您担心类中的数据库内容 - 您是否考虑过使用 O/R 映射器?

      这将使数据库内容完全不受您的代码和域对象的影响。

      不妨看看NHibernateActive Record

      【讨论】:

        【解决方案3】:

        不,这一点也不傻,事实上,每个人都应该这样做。业务对象不应包含任何持久性逻辑。

        顺便说一句,如果您使用的是 C# 3.0,那么您甚至可能不会使用 Factory 类。只需创建扩展方法。这样,您仍然可以将持久性代码与业务对象隔离,并且仍然可以调用 myObject.Save()。

        【讨论】:

        • 您仅对第一行投了赞成票……我一直在努力说服人们相信这一点。
        • 以后不要称它为工厂 - 你会开始混淆知道工厂是什么的人。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多