###都是设计模式惹的祸-----下面不知道该怎么写了###

06-04-03 wisedragon
我现在在做一个分类信息的一个系统

我按照 <<工厂方法设计模式>>

抽象的 info类

GenericInfo(一般的信息),HouseInfo(房产类信息),

JobInfo(招聘类信息),TradeInfo(交易类信息) 都是 Info 类的子类

InfoDAO接口

(GenericInfoDAOImp,HouseInfoDAOImp,JobInfoDAOImp,TradeInfoDAOImp 实现InfoDAO接口)

我觉的设计很完美了,可当知道一个infoId 的时候我不知道到底用哪个具体的DAOImp类去数据库查找详细信息呢

晕了 晕了,请高手指教更好的设计模式

    

wisedragon
2006-04-03 22:25

还有一个问题

HouseInfo(房产类信息),JobInfo(招聘类信息),TradeInfo(交易类信息)

都有一些单独的属性 在数据库中我该用一个表

还是个每个类建一个表好呢

wisedragon
2006-04-04 13:57
/**

* 抽象的工厂

*/

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) 方法去得到这个具体的信息

//或还有其它模式比较好解决这类系统问题吗 有人提到用 <<观察者模式>>

wisedragon
2006-04-04 13:59
/**
* 抽象的工厂
*/
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)
   {.......... }
}
...........
<p>

我的思路 和 设计是这样的 但家看看设计思路对吗

可这样遇到一个问题: 就是在action 控制层 当知道 infoId 时候 不知道到底该用哪个具体

工厂的 createInfo(int infoId) 方法去得到这个具体的信息

//或还有其它模式比较好解决这类系统问题吗 有人提到用 <<观察者模式>>

banq
2006-04-04 19:56
使用设计模式需要分析场景,也就是确立分析模式后,才使用设计模式,感觉你这里使用设计模式替代分析模式来解决需求。

根据你的需求,房产类信息和招聘类信息属于四色图中的description,是一种目录式对象。它们属于category。

当然它们都属于信息,但是信息这个抽象的域范围很广,域范围太广就没有意义了。

因此,你以info为抽象的提炼方式是不对的,更何况你用工厂模式来实现了。

猜你喜欢
2Go 1 2 下一页