ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
作法(Mechanics)
    • 修改presentation class,使其成为domain classObserver[GoF]
        • ==》如果尚未有domain class,就建立一个。
        • ==》如果没有[从presentation class到domain class]的关联性(link),就将domain class保存于presentation class的一个值域中。
    • 针对GUI class内的domain data,使用Self Encapsulate Field(171)。
    • 编译,测试。
    • 在事件处理函数(event handler)中加上对设值函数(setter)的调用,以[直接访问方式]更新GUI组件。
        • ==》在事件处理函数中放一个设值函数(setter),利用它将GUI组件更新为domain data的当前值。当然这其实没有必要,你只不过是拿它的值设定它自己。但是这样使用setter,便是允许其中的任何动作得以于日后被执行起来,这是这一步骤的意义所在。
        • ==》进行这个改变时,对于组件,不要使用取值函数(getter),应该采取[直接取用]方式,因为稍后我们将修改取值函数(getter),使其从domain object(而非GUI组件)取值。设值函数(setter)也将遭受类似修改。
        • ==》确保测试代码能够触发新添加的事件处理(event handling)机制。
    • 编译,测试。
    • 在domain class中定义数据及其相关访问函数(accessors)。
        • ==》确保domain class中的设值函数(setter)能够触发Observer模式的通报机制(notify mechanism)。
        • ==》对于被观察(被监视)的数据,在domain class中使用[与presentation class所用的相同型别](通常是字符串)来保存。后续重构中你可以自由改变这个数据型别。
    • 修改presentation class中的访问函数(accessors),将它们的操作对象改为domain object(而非GUI组件)。
    • 修改observer的update(),使其从相应的domain object中将所需数据拷贝给GUI组件。
    • 编译,测试。
posted on 2005-09-07 12:19 ivaneeo 阅读(301) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问