文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>《重构》中有点不清楚的两个手法

《重构》中有点不清楚的两个手法

时间:2010-09-25  来源:rangzee

感觉“以子类取代型别码”和“值域取代子类”应该是一个互为逆向的重构手法,不过书中没有这么说,所以只能瞎猜了,盼高人拍砖指正。 下面是本人总结的两类手法的对比:
以子类取代型别码 Replace Type Code with Subclasses
源类情况:私有成员保存型别码
          构造函数中指定型别码以创建相应对象
重构结果:无需保存型别码
          子类根据工厂函数指定的型别码而创建
          子类有函数返回硬编码的型别码
          父类提供一个用于返回硬编码的型别码的抽像函数
          各子类实现返回硬编码型别码的抽像函数返回的硬编码常量值不同
  以值域取代子类 Replace Subclasses with Fields 源类情况:子类返回硬编码的常量值(其实也是型别码)
          父类提供抽像函数
          各子类的唯一差别只是返回常量值不同
重构结果:在父类中保存的常量值(其实也是型别码)
          子类被全部删除
          父类中提供以子类名字命名的工厂函数
          工厂函数可以创建保存了旧子类常量(型别码)的对象(根据型别码对应原来的子类)
  感觉示例只是一个声明了型别码的静态变量,另一个直接硬编码而已,没其它区别,而且重构结果直接硬编码的工厂函数,也可以重构为“声明型别码的静态变量”,感觉真是一样了。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载