日期:2014-05-16 浏览次数:20486 次
接“设计模式综合实例分析之数据库同步系统(二)“。
6. 策略模式
由于表数据的同步方式有三种,分别是增量同步、先Delete后Insert方式、临时表方式,因此可以定义一个同步策略接口DataSynStrategy,并提供三个具体实现类:IncSynStrategy、DelAndInsSynStrategy和TempTableSynStrategy。类图如图8所示:
图8 策略模式实例类图
在图8中,Oracle表同步对象类OracleTableDBSynchronizer充当环境类,DataSynStrategy充当抽象策略类,其子类IncSynStrategy、DelAndInsSynStrategy和TempTableSynStrategy充当具体策略类。
在OracleTableDBSynchronizer中将DataSynStrategy作为方法synSingleTable()的局部变量,因此OracleTableDBSynchronizer与DataSynStrategy为依赖关系,如果为全局变量,则为关联关系。
7. 组合模式、命令模式和职责链模式
在使用临时表方式实现表同步时可以定义一系列命令对象,这些命令封装对数据库的操作,由于有些操作修改了数据库结构,因此传统的JDBC事务控制起不到作用,需要自己实现操作失败后的回滚逻辑。此时可以使用命令模式进行设计,在设计时还可以提供宏命令MacroCommand,用于将一些具体执行数据库操作的命令组合起来,形成复合命令。类图如图9所示(由于原始类图比较复杂,考虑到可读性,图9进行了适当简化,不过简化了之后还是挺复杂的,):
图9 组合模式、命令模式和职责链模式实例类图
(由于涉及到多个模式的联用,此图有点点复杂,)
在图9中,TempTableSynCommand充当抽象命令,