我想一个分类信息发布的系统 
就象:http://www.zhantai.com    www.ganji.com 一样的抽象的 info类  
GenericInfo(一般的信息),HouseInfo(房产类信息),JobInfo(招聘类信息),
TradeInfo(交易类信息)  都是 Info 类的子类子类都有特殊的属性:HouseInfo(房产类信息) 有价格,几室几庭等大家说 我DAO(数据访问)层该怎么设计比较好呢  或整个系统该怎么设计比较好呢?一开始我用 <<工厂模式方法模式>> 
 InfoFactory接口
(GenericInfoFactory,HouseInfoFactory,JobInfoFactory,TradeInfoFactory 实现InfoFactory接口)
可有点问题.   最好的解决方案

解决方案 »

  1.   

    如果做工厂的话,你应该有一个static类在整个系统中引用,看你的意思,可能需要一个infoManage来管理所有的infoFactory实现。
    首先用你传进来的param确定想要得到的Info实现,再根据该Info指定Factory,然后用Factory返回Info,再从你的Manage里抛出来。不知道这样说对否。
      

  2.   

    /**
    * 抽象的工厂
    */
    public interface  InfoFactory
    {
      public Info createNewInfo(Info newInfo);
      
      public Info createInfo(int infoId);
    }
    /**
    * 房产类信息工厂
    */
    public class HouseInfoFactory implements InfoFactory
    {
      public Info createNewInfo(Info newInfo)
      {.......... }
      
      public Info createInfo(int infoId)
      {..........}
    }
    /**
    * 招聘类信息工厂
    */
    public class JobInfoFactoryimplements InfoFactory
    {
      public Info createNewInfo(Info newInfo);
       {.......... }
      public Info createInfo(int infoId)
       {.......... }
    }
    ...........
    我的思路 和 设计是这样的  但家看看设计思路对吗可这样遇到一个问题: 就是在action 控制层 当知道 infoId 时候 不知道到底该用哪个具体
    工厂的 createInfo(int infoId) 方法去得到这个具体的信息//或还有其它模式比较好解决这类系统问题吗 有人提到用 <<观察者模式>>
      

  3.   

    你的infoId至少应该区分你所有的Info实现特征才行,否则……
      

  4.   

    每个info类对应自己的table,但是有一些统一的借口,比如save,update,getString()。所有的网页调用getString得到这个消息的所有信息,在每个info的getString()中把这个info的所有信息按照html个市创建好坏处是在class里面写html。如果更细致一点可以定义一些html的模版,几个或一个info对应一个模版,根据模版生成html.
      

  5.   

    这个问题的确是很麻烦,你可以参考OR Mapping相关技术
      

  6.   

    在上个公司做的是分类信息!是做ssh的!
      你的dao应该分开类别处理~虽然是同出一个info的超类,但是应该把业务逻辑分开处理!