java—如何正确地将工厂方法应用于dao工厂?

zf9nrax1  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(307)

关于dao的文档中说:
当底层存储不受从一个实现到另一个实现的更改的影响时,可以使用工厂方法模式来实现此策略,以生成应用程序所需的多个dao。本例的类图如图9.3所示。
图9.3本身:

造成误解的是我们怎么能用工厂的方法生产出 DAO 什么?据我所知,在这种情况下,刀可能看起来像

public interface DAOFactory{

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

}

但这不是一个工厂的方法。这将是一个抽象工厂,因为我们生产的是一系列对象,而不是单个对象。你不能解释一下他们说的是什么意思吗
这个策略可以使用工厂方法模式来实现,以产生应用程序所需的许多dao。本例的类图如图9.3所示。

0ve6wy6x

0ve6wy6x1#

你是对的。这是误导。运用工厂的形象刻画方法,无疑是抽象工厂设计模式的一个范例。工厂只有一个实现。
这里很好地解释了工厂方法和抽象工厂的区别:抽象工厂模式和工厂方法的区别
文档中显示的图描述了抽象工厂模式。
我可以想象下面使用daos和factory方法

// 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();
   }
}

相关问题