在 the documentation about DAO 中说:
当底层存储不会发生变化时 实施到另一个,这个策略可以使用 Factory Method模式生成了所需的一些DAO 应用。这种情况的类图如图9.3所示。
图9.3本身:
导致误解的原因是我们如何应用工厂方法来生成DAO
的号?据我所知,DAO可能看起来像
public interface DAOFactory{
public DAO1 getDAO1();
public DAO2 getDAO2();
}
但这不是工厂方法。它将是一个抽象工厂,因为我们生产的是一系列对象而不是一个对象。难道你不能说出他们的意思
这个策略可以使用 工厂方法模式,用于生成所需的多个DAO 应用。这种情况的类图如图9.3所示。
答案 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();
}
}