Java--用简单工厂来改进抽象工厂(反射)
2013-12-17 15:34
435 查看
接上一篇抽象工厂,改进方案去除IFactory、SqlServerFactory和AccessFactory三个工厂类取而代之的是DataAccess类,用一个简单工厂模式来实现。
1、DataAccess类
1、DataAccess类
public class DataAccess { private static final String db = "SqlServer"; //private static final String db = "Access"; public static IUser createUser(){ IUser result = null; switch (db) { case "SqlServer": result = new SqlServerUser(); break; case "Access": result = new AccessUser(); break; default: break; } return result; } public static IDepartment createDepartment(){ IDepartment result = null; switch (db) { case "SqlServer": result = new SqlServerDepartment(); break; case "Access": result = new AccessDepartment(); break; default: break; } return result; } }2、测试
public class Test { public static void main(String[] args) { User user = new User(); Department department = new Department(); IUser iu = DataAccess.createUser(); iu.insert(user); iu.getUser(1); IDepartment id = DataAccess.createDepartment(); id.insert(department); id.getDepartment(1); } }3、使用反射机制再优化
public class DataAccess { // 包名 private static final String AccemblyName = "com.test.factory.abstractmethod"; // 可以替换成Access private static final String db = "Access"; public static IUser createUser(){ IUser result = null; String className = AccemblyName + "." + db +"User"; Class<?> user = null; try { user = Class.forName(className); result = (IUser)user.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return result; } public static IDepartment createDepartment(){ IDepartment result = null; String className = AccemblyName + "." + db +"Department"; Class<?> department = null; try { department = Class.forName(className); result = (IDepartment)department.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return result; } }
相关文章推荐
- java中简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- Java设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
- C#--使用反射改进简单工厂
- java三种工厂模式:简单工厂、工厂方法、抽象工厂
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- Java设计模式之-----工厂模式(简单工厂,抽象工厂)
- 简单工厂-工厂方法-抽象工厂对比,给出理解思路和Java参考案例源码
- Java设计模式之简单工厂、工厂方法和抽象工厂
- JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
- java设计模式之工厂模式(简单工厂,工厂方法,抽象工厂)
- java 枚举和反射 实现简单的工厂模式
- Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】
- Java设计模式之简单工厂、工厂方法和抽象工厂
- 最简单lru缓存及改进版本(java备忘)
- java反射简单记录
- 结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)
- 简单Java多级反射
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别