大话设计模式-抽象工厂模式

 

一、抽象工厂模式定义

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

二、抽象工厂模式结构图

增加部门,完成与用户相同的操作:


调整为简单工厂模式:


三、抽象工厂模式实例

1.        实现sql server 数据库用户增加、查询。创建一个操作sql server数据库的类,实现sql server增加、查询;

2.        增加oracle 数据库用户增加、查询。创建一个操作oracle数据库的类,实现oracle增加、查询。

3.        创建一个操作数据库的抽象类,让操作sql server数据库的类和操作oracle数据库的类,继承当前抽象类。

4.        创建工厂类,用于创建sql server数据库、oracle数据库的类对象;

5.        采用抽象工厂模式,让工厂类的子类去创建sql server数据库、oracle数据库的类对象(如果是工厂方法模式,应该是4factory,保存用户的factory、查询用户的factory、保存部门的factory、查询部门的factory

6.        增加部门操作,完成与用户操作一样的插入及查询。

7.        如果再次增加一套项目操作,需要增加很多类。所以调整为简单工厂模式。在factory中通过switch case 判断创建sql server 实例,还是创建oracle实例。

8.        通过反射+工厂代替switch case

userDaoClass =Class.forName("com.dhdesipatt.abstractfactory.abstractfactory_6." +dbStr + "UserDao");

Object obj = userDaoClass.newInstance(); // 实例化对象,和使用关键字new一样

userDao =(UserDao) obj ; // 向下转型

9.        通过反射+配置文件,代替switch case

Properties p=new Properties(); 

InputStreamis;

try {

         is =PropertyParse.class.getResourceAsStream("db.properties");

         p.load(is); 

         is.close(); 

         db = p.getProperty("db");

} catch(Exception e) {

         e.printStackTrace();

                  

 

四、抽象工厂模式优点

符合设计模式之开闭原则、依赖倒置原则,

五、抽象工厂模式缺点

如果再增加另外一个表操作,则需要增加一套完成的类。

六、简单工厂模式、工厂方法模式、抽象工厂模式区别:

1.        简单工厂,只有一个工厂类,来创建用户操作类对象、部门操作类对象。如果需要增加项目操作类,则需要修改工厂类代码;

2.        工厂方法模式,每个工厂创建专门的类对象。如sql server 保存用户的类对象、sql server查询用户的类对象,oracle 保存用户的类对象,oracle查询用户的类对象;

3.        抽象工厂模式,每个工厂创建一类对象。如创建sql server存用户、查询用户、保存部门、查询部门的类对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值