设计模式读书笔记之简单工厂模式(Factory)

来源:互联网 发布:linux系统启动流程 编辑:程序博客网 时间:2024/05/21 13:56

这篇文章纯属为了后面的工厂方法和抽象工厂做对比和铺垫, 因为简单工厂就是简单的创造并返回对象, 没有复杂的结构和逻辑.

以最常见的dao为例。User对象有UserDao接口,UserDao有实现类UserOracleDao,UserDB2Dao。

[java] view plain copy
  1. //业务模型  
  2. package designpattern.factory;  
  3. public class User {  
  4. //......  
  5. }  
  6. //dao接口  
  7. package designpattern.factory;  
  8. public interface UserDao {  
  9.     public void insert(User u);  
  10.     public void DeleteById(String id);  
  11. }  
  12. //dao实现类  
  13. package designpattern.factory;  
  14. public class UserOracleDao implements UserDao{  
  15.     public void DeleteById(String id) {  
  16.         System.out.println("delete an user in oracle db.");  
  17.     }  
  18.   
  19.     public void insert(User u) {  
  20.         System.out.println("add an user in oracle db.");  
  21.     }  
  22. }  
  23. //dao实现类  
  24. package designpattern.factory;  
  25.   
  26. public class UserDB2Dao implements UserDao{  
  27.     public void DeleteById(String id) {  
  28.         System.out.println("delete an user in DB2 db.");  
  29.     }  
  30.   
  31.     public void insert(User u) {  
  32.         System.out.println("add an user in DB2 db.");  
  33.     }  
  34.   
  35. }  
  36. //dao工厂  
  37. package designpattern.factory.simple;  
  38. import designpattern.factory.*;  
  39. public class UserDaoFactory {  
  40.     public static UserDao createUserDao(String type){  
  41.         if("ORACLE".equals(type)){  
  42.             return new UserOracleDao();  
  43.         }  
  44.         else if("DB2".equals(type)){  
  45.             return new UserDB2Dao();  
  46.         }  
  47.         else{  
  48.             return null;  
  49.         }  
  50.     }  
  51. }  

 

特点: 工厂内包含了逻辑判断,根据客户的选择动态实例化相关的类。

优点: 把对象的创建集中放在工厂中.

缺点: ......

 

0 0
原创粉丝点击