Chinaunix首页 | 论坛 | 博客
  • 博客访问: 187196
  • 博文数量: 50
  • 博客积分: 1053
  • 博客等级: 少尉
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-05 22:55
文章分类

全部博文(50)

文章存档

2016年(2)

2015年(1)

2014年(6)

2012年(11)

2011年(22)

2010年(5)

2009年(3)

我的朋友

分类: C/C++

2012-08-12 13:05:32

主要内容来源于书上第15章。

我认为,书中以数据库的设计为例。

引言:如果不用设计模式,

那么一个产品,一个类,类太多了,就难以管理,这就出现了简单工厂,对外封装一个接口,在里面用分支判断处理多种产品创建。


第一要知道简单工厂,利用分支判断实现多种产品的创建。

缺点:增加新的产品时,就需要修改工厂类。
这就违反了开放封闭原则:软件实体(类、模块、函数)可以扩展,但是不可修改。

第二:如何让数据库适用以下变化
Q1:数据库不止一个,
Q2:每个数据库都增加(减少)表项


case1:使用工厂模式
工厂模式里仅只有一个工厂,
对于Q1,得另外创建工厂,忽略2个工厂的共性。
对于Q2,增加对应的表项,更改工厂里对应的函数;

case2:使用抽象工厂模式
而抽象工厂模式,
对于样例中,就是一个数据库,一个工厂。
抽象工厂模式中,有一个工厂接口,提炼出共性。较好的解决了Q1。
Q2问题,依然没有解决。

case3:使用抽象工厂模式+反射+(配置文件)
从列子中看,是取消了工厂接口。借鉴了简单工厂的程序框架,创建一个控制功能的类。

使用.net中的反射解决了多个数据库对象的问题,智能生成对象;
这种方法彻底解决了一个数据库一个工厂的问题,Q1 问题彻底解决。

对于Q2,影响只有一个类。
不像单一的抽象工厂,要修改所有的工厂和工厂接口。
而使用配置文件来配置数据库,可以减少编译代码,大大方便重用。


------------

本人总结后,发现以下问题

1. c++中没有反射概念,那么如上反射的应用有没有相应的替代方案。

2.书上15章,使用反射,其中删除了所有的工厂类,新建一个控制类,这里工厂都没有了,那怎么标题标记为:“15.8 用反射+抽象工厂的数据访问程序”


草草写了下,请指教。

阅读(1507) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

ryysoft2012-08-13 09:55:47

锐英源有专业软件开发培训(C语言、C++、C#、ASP.NET和Linux开发),保证掌握上万行大型项目开发能力,打开项目经理或系统分析员之门。条件好请来郑州面授,条件一般请选择QQ网授。
面授班热招中!面授学2个月,后期有22个月在线技术支持,指导写8个练习和项目,学2-4个月后安排工作,学费2800元学2年。另有3月制、4月制和6月制面授班热招中。
找培训就是找老师,就是找做项目,就是找优惠的价格,这些方面锐英源的优势超出你想象。
锐英源的老师有16年开发经验、8年教学和英译经验。耐心引导学员进行各个阶段的学习,因人施教带做小练习大项目,象师傅带徒弟一样引导学员成才。
主页www.wisestudy.cn   5