java – 何时使用抽象工厂模式?
我想知道何时需要使用抽象工厂模式. 这是一个例子,我想知道是否有必要. The UML 以上是抽象工厂模式,我的同学推荐. 以下是一些核心代码:
Test.properties的内容只有一行:
所以任何事情都可以告诉我这种适应是否必要? ——————-以下内容是为了解释真实的诉讼————– 我用Dao的例子是因为它很常见,任何人都知道. 事实上,我现在正在工作的与DAO无关,我正在努力建立一个Web 服务,web服务包含一些算法将文件转换为其他格式, 例如:net.CreatePDF,net.CreateWord等,它向客户端公开两个接口:getAlgorithms和doProcess. getAlogrithoms将返回所有算法的id,每个id都被赋予 调用doProcess方法的用户还将提供他想要的算法ID. 所有算法都扩展了AbstractAlgorithm,它定义了run()方法. 我使用AlogrithmsRepository存储所有算法(来自 属性文件,用于通过Web配置算法的具体java类 服务管理员.)也就是说,Web服务公开的接口DoProcess是 由具体的算法执行. 我举一个简单的例子:
然后用户将获得嵌入在xml中的算法列表.
2)用户通过以下方式向服务器发送DoProcess:
当服务器接收到这种类型的请求时,它将根据AlgorithmRepostory中的“algorithm”参数(在此请求中为pdf)获取具体的算法实例.并调用方法:
然后将pdf文件发送给用户. BTW,在这个例子中,每个算法类似于sqlDao,AccessDao. The design image 现在,AlgorithmRepostory是否需要使用抽象工厂? 最佳答案
这两种方法的主要区别在于,前者使用不同的DAO工厂来创建DAO,而底部的工厂存储一组DAO,并返回对存储库中DAO的引用.
如果多个线程需要访问相同类型的DAO,那么底层方法就会出现问题,因为JDBC连接未同步. 这可以通过让DAO实现newInstance()方法来修复,该方法只是创建并返回一个新的DAO.
存储库可以使用存储库中的DAO作为存储库返回的DAO的工厂(在这种情况下我将重命名为Factory),如下所示:
更新 至于您的问题,您的Web服务应该实现工厂还是可以使用您描述的存储库?答案再次取决于细节: >对于网络服务,这是正常的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |