新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

一、段字上移

1、如果两个子类具有一样的段字,可以将该段字移至类超。

2、可以少减子类重复的声明。

3、可以在父类实现该段字的行为,少减行为的重复。

二、数函上移

1、如果数函在各个子类中都生产雷同的结果,那么该应将其移至类超。

2、可以免避行为的重复,重复的万恶之源。

三、构造数函本体上移

如果各个子类具有一些本体几乎完全雷同的构造数函,那么该应在父类中新建一个构造数函,然后子类在构造数函中调用它。

四、数函下移

如果一个数函只与分部子类有关,那么该应将这个数函移到关相的子类中去。

五、段字下移

如果父类的一个段字只是被分部子类用到,那么该应动移啊关相的子类中去。

六、提炼子类

如果类中的一些性特只被分部的例实用到,那么新建一个子类,将下面所说的那一分部移到子类中去。

七、提炼父类

1、如果两个类有相似的性特,那么为这个两个类建立一个父类,将雷同的性特移至父类中。

2、又是去掉重复代码。

八、提炼接口

每日一道理
正所谓“学海无涯”。我们正像一群群鱼儿在茫茫的知识之海中跳跃、 嬉戏,在知识之海中出生、成长、生活。我们离不开这维持生活的“海水”,如果跳出这个“海洋”,到“陆地”上去生活,我们就会被无情的“太阳”晒死。

1、如果几个类的接口有雷同的分部,或者被应用的只是接口的子集,那么可以将雷同的子集提炼到一个独立的接口中。

2、接口是一大先进。

九、折叠继承系体

如果父类和子类之间没有太大的别区,那么可以将它们合为一体。

十、塑造模板数函

1、如果子类中有些法方一雷同的序顺行执类似的操纵,但是各个操纵的细节上不同,那么可以将这个操纵分离放进独立的数函中,并保障雷同的数函签名,这样原数函也就变的雷同了。将原数函移到父类。

2、这个就是设计式模的模板数函。

十一、以委托代替继承

1、如果子类只应用父类的一分部接口,或者基本不需要继承而来的据数,那么可以在子类中新建一个段字用来保存类超,然后调整子类数函,让它为改委托类超,最后代替它们的继承系关。

2、其实就是用组合提到继承。

3、这个就是设计式模中的委托式模。

十二、以继承代替委托

1、如果两个类是委托系关,并且经常为个整接口编写很多简略的委托数函,那么可以用委托继承委托类。

2、如果委托对象不止被其他一个对象同享,而且委托对象是可变的,在这个情况下,不能以继承代替委托。

文章结束给大家分享下程序员的一些笑话语录: 人脑与电脑的相同点和不同点,人脑会记忆数字,电脑也会记忆数字;人脑会记忆程序,电脑也会记忆程序,但是人脑具有感知能力,这种能力电脑无法模仿,人的记忆会影响到人做任何事情,但是电脑只有程序软件。比尔还表示,人脑与电脑之间最重要的一个差别就是潜意识。对于人脑存储记忆的特别之处,比尔表示,人脑并不大,但是人脑重要的功能是联络,人脑会把同样的记忆存储在不同的地方,因此记忆读取的速度就不相同,而这种速度取决于使用的频率和知识的重要性。人脑的记忆存储能力会随着年龄增长而退化,同时记忆的质量也会随着年龄退化。经典语录网

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/04/3059981.html

委托函数《重构》----处理概括关系相关推荐

  1. 重构-改善既有代码的设计:处理概括关系 (九)

    简化函数调用 1.  Pull Up Field 字段上移 两个子类拥有相同的字段.将该字段移至超类. 如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容 ...

  2. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  3. strlen()函数 与 “\0“ 的关系 与 利用;strcmp()

    众所周知 strlen()函数是用来计算长度的; strlen()函数 与 "\0" 的关系 strlen() 在读取字符串的时候 会 一直读到 \0 处停止; 例如以下代码; 结 ...

  4. 当模板方法遇到了委托函数,你的代码又可以精简了

    现如今当你翻看一些开源项目源码的时候,你会发现现在到处充斥着委托函数,如Func,Action,Predicate,确实现在的C#在函数式编程 的路上越来越成为主流,越来越显示威力,曾经的一些经典设计 ...

  5. exit函数和析构函数的关系

    exit函数和析构函数的关系 exit( )函数的作用是删除所有的静态对象,刷新缓冲,关闭所有的I/O通道,然后结束程序. 如果对象是局部对象,exit()函数不会调用对象的析构函数,因为不存在栈空间 ...

  6. 改善代码设计 —— 处理概括关系(Dealing with Generalization)

    1. Pull Up Field (提升值域) 解释: 如果发现每个子类都拥有相同的某个值域, 那么使用 Pull Up Field 将这个值域提升到父类中去. 冲动前: 冲动后: 2. Pull U ...

  7. 代码重构(一):函数重构规则

    [笔记] 以下是通用的代码重构规则 python代码重构技巧看这里:Python重构代码的一些模式 ========================== 重构是项目做到 一定程度后必然要做的事情.代码 ...

  8. 自动分析源代码,创建函数地图展示调用关系

    极客讨论器现在可以自动分析 C/C++/Java/C#/Python/Objective-C 语言源代码并生成表示调用关系的函数地图,并使用"旅游"模式,在函数地图中浏览代码.如图 ...

  9. 深入理解javascript原型和闭包(2)——函数和对象的关系

    上文(理解javascript原型和作用域系列(1)--一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; co ...

最新文章

  1. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
  2. java 远程共享_【原创】(扫盲)远程共享对象SharedObject的用法
  3. 前缀函数及kmp算法
  4. Apache,php,mysql整合安装包 for Windows 2000/xp/2003
  5. pyc文件反编译为py文件
  6. ABAP EXCEL 上传 和下载 过程
  7. 【机器视觉】 dev_set_preferences算子
  8. leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)
  9. 键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率
  10. python使用md5加密_如何使用Python构建加密机器人并将其连接到Facebook Messenger
  11. 3. redis的超时,事务,watch
  12. tensorflow: 重置/清空计算图
  13. html制作省市区三级联动,js实现省市区三级联动
  14. PHP快速入门指南-基础篇一
  15. Hive窗口函数之preceding and following
  16. Nvidia驱动负优化与GTX1070的测试
  17. 金蝶EAS BOS工作流开发(附带JAVA脚本)
  18. 全球屏占比最高!华为MatePad Pro震撼发布
  19. 程序员薪水变化数据大曝光,哭着上班,笑着拿工资!
  20. 微信的WXML和HTML WXSS和CSS的区别详解

热门文章

  1. QString string int double char 相互转化
  2. mac常用设置(新建、显示隐藏文件、任意位置开启终端等)
  3. export ‘Switch‘ (imported as ‘Switch‘) was not found in ‘react-router-dom‘
  4. LeetCode(589)——N叉树的前序遍历(JavaScript)
  5. 返回封装结果集Result
  6. 操作系统的发展与分类
  7. 为了有一些储蓄,把自己压榨到最狠的时候是怎样的?
  8. 新房装修有哪些除味小妙招?
  9. 今天和朋友去参观一家做电商创业公司
  10. 赚钱这件事并不难,难的是你没有搞懂这个思维?