【问题标题】:Where to put the GetObjectColletion Methods?将 GetObjectColletion 方法放在哪里?
【发布时间】:2009-01-19 21:38:54
【问题描述】:

应用有一个 Foo 类,它是一个具体类,所有业务逻辑和行为都已正确定义。

也就是说,我们需要获取保存在此应用中的所有 Foo 的集合。

这个“IEnumerable GetFoos()”方法应该放在哪里?

不在 Foo 类本身,对吗?

【问题讨论】:

    标签: design-patterns oop


    【解决方案1】:

    您将需要一个从 CollectionBase 派生的 Foos 类或类似的类来公开您的 Foo 类的实例。

    【讨论】:

      【解决方案2】:

      要遵守 SOLID 原则,您应该考虑 Foo 类的真正目的。由于我不知道 Foo 的实施细节和内部运作,我不能说太多。但是这样的设计不是更传统吗?

      class Foo
      {
        IPersistancePresenter persistancePresenter;
        public Foo(IPersistancePresenter persistancePresenter)
        { 
           persistancePresenter = persistancePresenter;
        }
      }
      
      interface IPersistancePresenter <T>
      {
        IList<T> GetInstancesOf<T>();
      }
      

      Foo 不会改变(因为它不应该是 Foo 的责任)如果以后会有另一个类而不是 Foo,它必须被持久化并在运行时收集实例。

      【讨论】:

        猜你喜欢
        • 2019-10-14
        • 2012-07-18
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多