如何正确应用工厂方法到DAO工厂?

时间:2015-01-15 08:56:08

标签: java dao factory

the documentation about DAO 中说:

  

当底层存储不会发生变化时   实施到另一个,这个策略可以使用   Factory Method模式生成了所需的一些DAO   应用。这种情况的类图如图9.3所示。

图9.3本身:

enter image description here

导致误解的原因是我们如何应用工厂方法来生成DAO?据我所知,DAO可能看起来像

public interface DAOFactory{

    public DAO1 getDAO1();
    public DAO2 getDAO2();

}

但这不是工厂方法。它将是一个抽象工厂,因为我们生产的是一系列对象而不是一个对象。难道你不能说出他们的意思

  

这个策略可以使用   工厂方法模式,用于生成所需的多个DAO   应用。这种情况的类图如图9.3所示。

1 个答案:

答案 0 :(得分:1)

你是对的。这是误导。 描述 Factory方法的使用的图像肯定是抽象工厂设计模式的一个例子。工厂只有一个实施。

这里有一个很好的解释工厂方法和抽象工厂之间的区别:Differences between Abstract Factory Pattern and Factory Method

文档中显示的图表描述了抽象工厂模式。

我可以想象以下使用 DAO 工厂方法

// the Service contains the business logic and uses DAOs to access data
class BaseService {

   public Object doSomething() {
       return getDao().retrieveObject("identifier");
   }

   // Factory method producing DAOs
   public IDao getDao() {
       return new BaseDao();
   }

}

// The DAO interface
interface IDao {
    Object retrieveObject(String identifier);
}


// Another Service that overwrite the type of produced DAOs 
class SmartService extends Service {

   // overwrite the factory method
   public IDao getDao() {
       return new SmartDao();
   }
}