当前位置: 首页 > news >正文

tp钱包下载优化大师免费安装下载

tp钱包下载,优化大师免费安装下载,做个网站跳转链接怎么做,上海中高风险地区有哪些重构类关系-Pull Up Constructor Body构造函数本体上移三 1.构造函数本体上移 1.1.使用场景 你在各个子类中拥有一些构造函数,它们的本体几乎完全一致。在超类中新建一个构造函数,并在子类构造函数中调用它。 构造函数是很奇妙的东西。它们不是普通函…

重构类关系-Pull Up Constructor Body构造函数本体上移三

1.构造函数本体上移

1.1.使用场景

你在各个子类中拥有一些构造函数,它们的本体几乎完全一致。在超类中新建一个构造函数,并在子类构造函数中调用它。

构造函数是很奇妙的东西。它们不是普通函数,使用它们比使用普通函数受到更多的限制。

如果你看见各个子类中的函数有共同行为,第一个念头应该是将共同行为提炼到一个独立函数中,然后将这个函数提升到超类。

对构造函数而言,它们彼此的共同行为往往就是“对象的建构”。这时候你需要在超类中提供一个构造函数,然后让子类都来调用它。很多时候,子类构造函数的唯一动作就是调用超类构造函数。这里不能运用Pull Up Method (322),因为你无法在子类中继承超类构造函数。(你可曾痛恨过这个规定?)

如果重构过程过于复杂,你可以考虑转而使用Replace Constructor with Factory Method (304)。

1.2.如何做

  • 在超类中定义一个构造函数。
  • 将子类构造函数中的共同代码搬移到超类构造函数中。
  • 被搬移的可能是子类构造函数的全部内容。
  • 首先设法将共同代码搬移到子类构造函数起始处,然后再复制到超类构造函数中。
  • 将子类构造函数中的共同代码删掉,改而调用新建的超类构造函数。
  • 如果子类构造函数中的所有代码都是一样的,那么子类构造函数就只需要调用超类构造函数。
  • 编译,测试。
  • 如果日后子类构造函数再出现共同代码,你可以首先使用Extract Method (110)将那一部分提炼到一个独立函数,然后使用Pull Up Method (322)将该函数上移到超类。

1.3.示例

下面是一个表示“雇员”的Employee类和一个表示“经理”的Manager类:

 class Employee...protected String _name;protected String _id;class Manager extends Employee...public Manager (String name, String id, int grade) {_name = name;_id = id;_grade = grade;}private int _grade;

Employee的字段应该在Employee构造函数中设初值。因此我定义了一个Employee构造函数,并将它声明为protected,表示子类应该调用它

 class Employeeprotected Employee (String name, String id) {_name = name;_id = id;}

然后,我从子类中调用它:

   public Manager (String name, String id, int grade) {super (name, id);_grade = grade;}

后来情况又有些变化,构造函数中出现了共同代码。假如我有以下代码:

 class Employee...boolean isPriviliged() {..}void assignCar() {..}class Manager...public Manager (String name, String id, int grade) {super (name, id);_grade = grade;// 这段代码在其他子类中也会重复出现if (isPriviliged()) assignCar(); //every subclass does this}boolean isPriviliged() {return _grade > 4;}

我不能把调用assignCar()的行为移到超类构造函数中,因为唯有把合适的值赋给_grade字段后才能执行assignCar()。此时我需要使用Extract Method (110)和Pull up Method (322)。

 class Employee...void initialize() {if (isPriviliged()) assignCar();}class Manager...public Manager (String name, String id, int grade) {super (name, id);_grade = grade;// 将重复的代码提炼为方法,同时提升到父类中initialize();}

摘录来自: [美]马丁·福勒(Martin Fowler). “重构:改善既有代码的设计。” Apple Books.
摘录来自: [美]马丁·福勒(Martin Fowler). “重构:改善既有代码的设计。” Apple Books.

摘录来自: [美]马丁·福勒(Martin Fowler). “重构:改善既有代码的设计。” Apple Books.
摘录来自: [美]马丁·福勒(Martin Fowler). “重构:改善既有代码的设计。” Apple Books.

http://www.lbrq.cn/news/2684701.html

相关文章:

  • 做互助盘网站谷歌海外广告投放
  • 水泥网站营销方案怎么做手机google官网注册账号入口
  • 那个网站做拍手比较好seo优化快速排名技术
  • web开发前端框架优化大师apk
  • 企业网站建设admin外包公司的人好跳槽吗
  • 免费web服务器网站澳门长沙seo网络公司
  • 找深圳做网站的公司seo代运营
  • 织梦网站tel标签郑州网站推广培训
  • 松山湖做网站专业网站优化公司
  • 网站运维托管软件开发一般需要多少钱
  • 酒店品牌网站建设推广网站怎么注册
  • 网做英文网站链接制作
  • 什么网站可以做任务挣钱的青岛网站建设制作推广
  • 做网站建设需要多少钱搜索引擎推广的三种方式
  • 做网站注意事项北京全网营销推广公司
  • 自助业务网站系统seo收录查询工具
  • 免费网站模板 怎么用广东公共广告20120708
  • 政府网站建设程序的设计原则不包括百度快速收录提交工具
  • 免费建网站赚钱免费企业网站建设
  • 甘肃省今天疫情最新情况sem和seo是什么
  • 有关大学生做兼职的网站无锡营销型网站建设
  • 网站ipv6改造怎么做企拓客app骗局
  • 网站建设与维护手机app免费下载
  • 泰安公司网站建设沈阳seo
  • 什么网站专门做自由行的线上推广方式都有哪些
  • 长春做企业网站多少钱西安网站快速排名提升
  • 用axure做网站的规范友情链接平台赚钱吗
  • 定制网站制作公司有哪些信息流推广的竞价机制是
  • 做鞋设备网站抖音十大搜索关键词
  • 做一个自己的网站多少钱西安网络推广营销公司
  • 前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!笔记
  • 【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
  • 支持任意 MCP 协议的客户端
  • 【k8s】k8s安装与集群部署脚本
  • 论文学习22:UNETR: Transformers for 3D Medical Image Segmentation
  • 电子电气架构 --- 软件定义汽车的驱动和挑战