工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。
下面通过一个小例子来解释工厂模式的工作流程,本例在Java工程下创建,本例子的功能是:应用ServiceApp中如何调用不同Dao类中的方法(所有类均同包)
1.首先创建Dao.java接口作为基本dao的规范
package cn.smile.factory;
public interface Dao {
public void fn();
}
2.创建不同的dao类UserMysqlDao.java和UserOracleDao.java,均实现dao接口
UserMysqlDao.java
package cn.smile.factory;
public class UserMysqlDao implements Dao{
public void fn(){
System.out.println("mysql:fn......");
}
}
UserOracleDao.java
package cn.smile.factory;
public class UserOracleDao implements Dao{
public void fn(){
System.out.println("oracle:fn......");
}
}
3.创建工厂类DAOFactory.java,返回一个需要的dao对象
package cn.smile.factory;
public class DAOFactory {
public static Dao getDao(){
return new UserMysqlDao();
//使用Mysql数据库时
// return new UserOracleDao();
//使用Oracle数据库时
}
}
4.创建应用ServiceApp.java,调用工厂提供的对象的方法即可
package cn.smile.factory;
public class ServiceApp {
public void test(){
DAOFactory.getDao().fn();
}
public static void main(String[] args) {
new ServiceApp().test();
}
}
工厂模式:
将不同的资源类全部实现一个接口
设置一个工厂类
在工厂类中返回一个所需要的资源类
在应用中直接调用工厂提供的的方法即可
此种方式的优点在于更换资源类的实现时,只需要更改工厂类即可,而不需要修改应用