目录
- 工厂模式定义
- 使用场景
- 代码实现
定义
工厂模式是定义一个用于创建对象的接口,让子类决定实例化那个类。
使用场景
- 任何需要生成复杂对象的地方,都可以使用工厂模式。
- 在不同条件下创建不同实例。
代码实现
以下为数据存储业务中使用工厂模式到代码实现。
- 抽象产品类定义操作方法
public abstract class DataHandler {
public abstract void add(String id, String name);
public abstract void delete(String id);
public abstract void update(String id, String name);
public abstract String query(String id);
}
复制代码
- 三种不同存储方式(文件、xml、数据库)的代码实现。
public class FileHandler extends DataHandler{
@Override
public void add(String id, String name) {
}
@Override
public void delete(String id) {
}
@Override
public void update(String id, String name) {
}
@Override
public String query(String id) {
return "FileHandler";
}
}
复制代码
public class XmlHandler extends DataHandler{
@Override
public void add(String id, String name) {
}
@Override
public void delete(String id) {
}
@Override
public void update(String id, String name) {
}
@Override
public String query(String id) {
return "XmlHandler";
}
}
复制代码
public class DBHandler extends DataHandler {
@Override
public void add(String id, String name) {
}
@Override
public void delete(String id) {
}
@Override
public void update(String id, String name) {
}
@Override
public String query(String id) {
return "DBHandler";
}
}
复制代码
- 工厂类
public class DataFactory {
public static <T extends DataHandler> T getDataHandler(Class<T> tClass) {
DataHandler handler = null;
try {
handler = (DataHandler) Class.forName(tClass.getName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return (T) handler;
}
}
复制代码
- 工厂模式的使用
public class DataHandlerTest {
@Test
public void testFactory() {
FileHandler fileHandler = DataFactory.getDataHandler(FileHandler.class);
System.out.println("FileHandler query result = " + fileHandler.query("Test"));
XmlHandler xmlHandler = DataFactory.getDataHandler(XmlHandler.class);
System.out.println("XmlHandler query result = " + xmlHandler.query("Test"));
DBHandler dbHandler = DataFactory.getDataHandler(DBHandler.class);
System.out.println("FileHandler query result = " + dbHandler.query("Test"));
}
}
FileHandler query result = FileHandler
XmlHandler query result = XmlHandler
FileHandler query result = DBHandler
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END