重构手法23:Duplicate Observed Data (复制“被监视数据”)

 

你有一些领域数据置身于GUI控件中,而领域函数需要访问这些数据。将该数据复制到一个领域对象中。建立一个Observer模式,用以同步领域对象和GUI对象内的重复数据。

动机:一个分层良好的系统,应该将处理用户界面和处理业务逻辑的代码分开。之所以这样做,原因有以下几点:1)你可能需要使用不同的用户界面来表现相同的业务逻辑,如果同时承担2种责任,用户界面会变得过分复杂;2)与GUI隔离后,领域对象的维护和演化都会更容易,你甚至可以让不同的开发者负责不同部分的开发。

       尽管可以轻松地将“行为”划分到不同部位,“数据”却往往不能如此。同一项数据可能既需要内嵌于GUI控件,也需要保存于领域模型里。自从MVC模式出现后,用户界面框架都使用多层系统来提供某种机制,使你不但可以提供这类数据,并保持它们同步。

       如果你遇到的代码是以2层方式开发,业务逻辑被内嵌于用户界面之中,你就有必要将行为分离出来。其中的主要工作就是函数的分解和搬移。但数据就不同了;你不能仅仅只是移动数据,必须将它复制到新的对象中,并提供相应的同步机制。

 

转载于:https://www.cnblogs.com/matchcolor/archive/2010/08/05/1786283.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值