应用GOF设计模式优化软件系统的功能实现代码示例——重构系统的持久层中的数据库连接组件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1应用GOF设计模式优化软件系统的功能实现代码示例——重构系统的持久层中的数据库连接组件
1.1.1应用策略模式重构系统的持久层中的数据库连接组件
1、策略模式
(1)什么是策略模式
策略模式把“算法(业务规则)”和“环境(封装应用的场景)”分离开----其中的环境类主要是负责维持和查询算法类,而各种算法(也就是我们的功能实现)则由具体的策略类来实现(并且可以通过继承来产生出层次性的类)。

该模式属于GOF中的行为型类型的模式。

(2)为什么要应用策略模式
达到把“算法”与使用算法的“客户”之间的关系独立开。

不希望出现下面的状况---将实现各种不同数据库的“连接”的功能代码(也就是策略模式中的“算法”)直接出现在使用该“连接”的程序中(也就是策略模式中的“客户”----本示例为DAO组件)。

这样设计方案将使的“客户”和“算法”完全绑定----其后果呢?!因为“算法”一旦改变,将会影响到相关的各个客户程序也需要被动地修改,从而不利于系统功能的维护升级。

2、应用模板方法模式提升系统的可扩展性
(1)模板方法模式与策略模式的作用十分类似
有时可以用策略模式替代模板方法模式——模板方法模式通过继承来实现代码复用,而策略模式使用委托实现。

因为委托比继承具有更大的灵活性,继承却经常会被错误的滥用——当子类比较多时,将会出现“类爆炸”。

(2)策略模式把不确定的行为集中到一个接口中,并在主功能类中委托这个接口
(3)当需要变化的操作非常多时,采用策略模式把这些操作抽取到一个接口中当某些基本操作的实现可能需要在运行时改变时,可以通过在运行时改变委托对象来实现,而继承则不能实现动态地调整。

此时,也应该要采用策略模式。

3、与策略模式有关的UML类图
4、编程实现的方法
根据策略模式的类图,掌握所需要的各个角色的类和接口。

相关文档
最新文档