博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象工厂举例
阅读量:6574 次
发布时间:2019-06-24

本文共 3192 字,大约阅读时间需要 10 分钟。

抽象工厂:  

   多个父类   每个父类若干子类

  一个学生Dao抽象父类 方法 增删改查

  对应一个数据库存储方式的学生Dao实现子类
  一个文件存储方式的学生Dao实现子类

  一个教师Dao抽象父类 方法增删改查

  对应一个数据库存储方式的教师Dao实现子类
  一个文件存储方式的教师Dao实现子类

  一个抽象工厂 创建学生dao的方法 创建老师dao的方法

  db子类工厂 创建学生dao的方法 创建老师dao的方法
  file子类工厂 创建学生dao的方法 创建老师dao的方法

  通过配置文件来确定选择哪种存储方式

  在servise中,需要创建dao的实例对象

抽象工厂通过配置文件来确定使用哪种存储方式,确定后返回一个抽象工厂的实体对象,

通过实体对象选择自己要调用的是教师Dao还是学生Dao

实体类

public interface StudentDao {    void insertStudent() ;}
学生Dao接口
public interface TeacherDao {    void insertTeacher() ;}
老师Dao接口
1 /** 2  * 抽象工厂, 3  * 1、通过配置文件选择数据存储方式 4  * 2、规范子类的创建Dao的方法 5  * @author Administrator 6  * 7  */ 8 public abstract class DaoFactory { 9         10 //     1、提供获取工厂对象的方法,通过这个方法得到工厂对象  11      public static DaoFactory getDaoFactory() {12 //         1.1创建properties对象13          Properties properties = new Properties();14 //         1.2加载配置文件  配置文件中存放的是数据库类型的dao或者是文件类型的Dao15          try {16             properties.load(new FileReader("abstractfactory.properties"));17 //         1.3 通过键值对获取权限命名18             String property = properties.getProperty("property");19 //         1.4 通过类反射获取这个类并创建对象20             DaoFactory daoFactory = (DaoFactory) Class.forName(property).newInstance();21              return daoFactory;22         } catch (Exception e) {23             e.printStackTrace();24         }25 //         1.5返回对象  26         return null;27      }28 //     2、用户获取到DaoFactory的实现类对象后,通过工厂对象调用方法创建需要的Dao对象29      public abstract StudentDao createStudentDao();30      public abstract TeacherDao createTeacherDao();31 }
1 /** 2  * 将权限命名放在配置文件中 3  * 如果用户选择的是数据库存储方式,则使用该工厂创建对应的Dao 4  * @author Administrator 5  * 6  */ 7 public class DbDaoFactory extends DaoFactory { 8  9     @Override10     public StudentDao createStudentDao() {11         12         return new DbStudentDao();13     }14 15     @Override16     public TeacherDao createTeacherDao() {17         return new DbTeacherDao();18     }19 20 }
数据库存储方式的工厂
1 /** 2  * 将权限命名放在配置文件中 3  * 如果用户选择的是数据库存储方式,则使用该工厂创建对应的Dao 4  * @author Administrator 5  * 6  */ 7 public class FileDaoFactory extends DaoFactory { 8  9     @Override10     public StudentDao createStudentDao() {11         12         return new FileStudentDao();13     }14 15     @Override16     public TeacherDao createTeacherDao() {17         return new FileTeacherDao();18     }19 20 }
文件存储方式的工厂
1 public class DbTeacherDao implements TeacherDao {2 3     @Override4     public void insertTeacher() {5         System.out.println("数据库存储添加老师");6     }7 8 }
数据库存储类型的教师Dao
1 public class DbStudentDao implements StudentDao{2 3     @Override4     public void insertStudent() {5         System.out.println("数据库存储添加学生");6         7     }8 9 }
数据库存储类型的学生Dao
1 public class FileTeacherDao implements TeacherDao {2 3     @Override4     public void insertTeacher() {5         System.out.println("文件存储添加老师");6     }7 8 }
文件存储类型的老师Dao
1 public class FileStudentDao implements StudentDao{2 3     @Override4     public void insertStudent() {5         System.out.println("文件存储添加学生");6         7     }8 9 }
文件存储类型的学生Dao

然后Servise创建工厂,调用对应的Dao进行增删改查

配置文件

property=com.methodfactory.DbDaoFactory

#property=com.methodfactory.FileDaoFactory

转载于:https://www.cnblogs.com/19322li/p/10983185.html

你可能感兴趣的文章
Java 对Oracle数据库中的 BLOB类型 插入图片
查看>>
win64位下安装python的image支持
查看>>
【Linux】让命令提示符显示日期和时间
查看>>
Oracle BRM处理逻辑
查看>>
windows纯手工安装php和Apache以及连接mysql
查看>>
操作技巧——保障无线上网的技巧
查看>>
Tomcat的安装、配置常见问题
查看>>
第七天继承之继承
查看>>
strstr查找子字符串函数
查看>>
我的友情链接
查看>>
DevExpress v17.2新版亮点——XAF篇
查看>>
Linux教程:10条秘诀确保Linux桌面安全性
查看>>
apache 日志参数
查看>>
如何关闭360防火墙
查看>>
disable-user-add-description
查看>>
UI控件之(TextField)
查看>>
skb解析
查看>>
Linux基础命令(一)
查看>>
PHP找工作指南!
查看>>
Linux的基础命令
查看>>