举个例子,一个多站点文章系统,有两个表,站点表和文章表,对应两个类Site类,站点
Article类,文章现在需要获取一个数据-----某个站点文章数量
从面向对象,合理设计的角度,这个获取数据的属性或方法应该做在哪里更加合理?1、site.ArticleCount属性 ,该属性表明某个站点实例拥有的文章数量
2、Article类创建一个方法,GetArticleCountBySiteID() 方法1似乎更符合面向对象规则,而方法2,因为获取的数据是文章,做在文章类里面似乎也有道理?

解决方案 »

  1.   

    我觉得是第一种方法更合理。获取某个站点的文掌应该是这个站点应该拥有的技能,而Article应该只是负责article直接有关的工作,比如article.showAuthor()
      

  2.   

    补充:
    我还想到第三个方案:3、Article类创建一个方法,GetArticleCountBySiteID()  ,site.ArticleCount属性则调用此方法现在3个方案,用哪个好呢?
      

  3.   

    Article类应该有一个对应的Articles的集合类,把你原先Article中的部分跟集合管理相关的功能放到Articles中。
    可以参考ADO.NET Entity Framework中生成的数据访问层代码。
      

  4.   

    我支持这种方案..
    Article类就是一个共同类, 里面 GetArticleCountBySiteID()共通方法,其他site的统一调用这个方法获取文章数量。。个人觉得这种最好...
      

  5.   

    Site.Articles.CountArticles是Site类对象下的所有文章列表,是一个集合
      

  6.   

    个人观点,Count不是对象的基本属性,而是一个动作,放在方法里比较合适。而且不建议对象既是实体又提供数据访问的操作,实体就是纯粹的实体。