我目前使用抽象工厂模式设置了一些DAO。代码如下:
public abstract class DaoFactory
public static GetDaoFactory()
public abstract IPersonDao GetPersonDao()
// etc.
静态方法
GetDaoFactory()
返回底层的SqlDaoFactory
。直到今天,所有的DAO都使用同一个SQL数据库。现在,我想向该工厂添加另一个DAO,但是该DAO将与外部服务交互而不是SQL数据库(假设这是GetCompanyDao()
)。我基本上只想将此GetCompanyDao()
方法添加到抽象DaoFactory
类中,以便公共接口完全解耦从底层实现(无需/无法告知特定dao是使用SQL还是外部服务)。我应该简单地将
SqlDaoFactory
重命名为更合适的名称,并在其中包含GetCompanyDao()
方法,以便该DAO工厂现在对某些DAO使用SQL,对其他DAO使用外部服务?还是有其他方法可以实现这一点?