我们已经实现了一个典型的 DAO/抽象工厂模式。设计是这样的:
DAOFactory - 返回 MySQLFactory / SQLiteFactory 的一个实例
- MySQLFactory - 返回与 MySQL DB 对话的 DAO
- SQLiteFactory - 返回与 SQLite DB 对话的 DAO
事情很好。但是,我们需要创建两个可执行文件:提供给客户的一个使用 SQLiteFactory 实例和相关的 DAO。在那个可执行文件中,我们不想包含任何与 MySQLFactory 相关的类。如果我删除这些类,那么当类加载器正在加载 DAOFactory 类时,我们会在运行时看到 ClassNotFoundException。
我们如何实现我们的 DAOFactory 以便在运行时不需要 MySQLFactory ?某些其他类也存在相同的问题,即某些类仅适用于应用程序的内部版本。什么是一种好的实现方式,以便我们可以从交付给客户的软件中排除类?
谢谢深