日期:2014-05-16  浏览次数:20432 次

设计模式综合实例分析之数据库同步系统(三)

       接“设计模式综合实例分析之数据库同步系统(二)“。

 

        6. 策略模式

       由于表数据的同步方式有三种,分别是增量同步、先DeleteInsert方式、临时表方式,因此可以定义一个同步策略接口DataSynStrategy,并提供三个具体实现类:IncSynStrategyDelAndInsSynStrategyTempTableSynStrategy。类图如图8所示:

8 策略模式实例类图

       在图8中,Oracle表同步对象类OracleTableDBSynchronizer充当环境类,DataSynStrategy充当抽象策略类,其子类IncSynStrategyDelAndInsSynStrategyTempTableSynStrategy充当具体策略类。

       在OracleTableDBSynchronizer中将DataSynStrategy作为方法synSingleTable()的局部变量,因此OracleTableDBSynchronizerDataSynStrategy为依赖关系,如果为全局变量,则为关联关系。

 

       7. 组合模式、命令模式和职责链模式

         在使用临时表方式实现表同步时可以定义一系列命令对象,这些命令封装对数据库的操作,由于有些操作修改了数据库结构,因此传统的JDBC事务控制起不到作用,需要自己实现操作失败后的回滚逻辑。此时可以使用命令模式进行设计,在设计时还可以提供宏命令MacroCommand,用于将一些具体执行数据库操作的命令组合起来,形成复合命令。类图如图9所示(由于原始类图比较复杂,考虑到可读性,图9进行了适当简化,不过简化了之后还是挺复杂的,微笑):

9 组合模式、命令模式和职责链模式实例类图

(由于涉及到多个模式的联用,此图有点点复杂,偷笑

       在图9中,TempTableSynCommand充当抽象命令,