委托函数《重构》----处理概括关系
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正
一、段字上移
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. Pull Up Field 字段上移 两个子类拥有相同的字段.将该字段移至超类. 如果各子类是分别开发的,或者是在重构过程中组合起来的,你常会发现它们拥有重复特性,特别是字段更容 ...
- Linux 编程中的API函数和系统调用的关系【转】
转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...
- strlen()函数 与 “\0“ 的关系 与 利用;strcmp()
众所周知 strlen()函数是用来计算长度的; strlen()函数 与 "\0" 的关系 strlen() 在读取字符串的时候 会 一直读到 \0 处停止; 例如以下代码; 结 ...
- 当模板方法遇到了委托函数,你的代码又可以精简了
现如今当你翻看一些开源项目源码的时候,你会发现现在到处充斥着委托函数,如Func,Action,Predicate,确实现在的C#在函数式编程 的路上越来越成为主流,越来越显示威力,曾经的一些经典设计 ...
- exit函数和析构函数的关系
exit函数和析构函数的关系 exit( )函数的作用是删除所有的静态对象,刷新缓冲,关闭所有的I/O通道,然后结束程序. 如果对象是局部对象,exit()函数不会调用对象的析构函数,因为不存在栈空间 ...
- 改善代码设计 —— 处理概括关系(Dealing with Generalization)
1. Pull Up Field (提升值域) 解释: 如果发现每个子类都拥有相同的某个值域, 那么使用 Pull Up Field 将这个值域提升到父类中去. 冲动前: 冲动后: 2. Pull U ...
- 代码重构(一):函数重构规则
[笔记] 以下是通用的代码重构规则 python代码重构技巧看这里:Python重构代码的一些模式 ========================== 重构是项目做到 一定程度后必然要做的事情.代码 ...
- 自动分析源代码,创建函数地图展示调用关系
极客讨论器现在可以自动分析 C/C++/Java/C#/Python/Objective-C 语言源代码并生成表示调用关系的函数地图,并使用"旅游"模式,在函数地图中浏览代码.如图 ...
- 深入理解javascript原型和闭包(2)——函数和对象的关系
上文(理解javascript原型和作用域系列(1)--一切都是对象)已经提到,函数就是对象的一种,因为通过instanceof函数可以判断. var fn = function () { }; co ...
最新文章
- 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
- java 远程共享_【原创】(扫盲)远程共享对象SharedObject的用法
- 前缀函数及kmp算法
- Apache,php,mysql整合安装包 for Windows 2000/xp/2003
- pyc文件反编译为py文件
- ABAP EXCEL 上传 和下载 过程
- 【机器视觉】 dev_set_preferences算子
- leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)
- 键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率
- python使用md5加密_如何使用Python构建加密机器人并将其连接到Facebook Messenger
- 3. redis的超时,事务,watch
- tensorflow: 重置/清空计算图
- html制作省市区三级联动,js实现省市区三级联动
- PHP快速入门指南-基础篇一
- Hive窗口函数之preceding and following
- Nvidia驱动负优化与GTX1070的测试
- 金蝶EAS BOS工作流开发(附带JAVA脚本)
- 全球屏占比最高!华为MatePad Pro震撼发布
- 程序员薪水变化数据大曝光,哭着上班,笑着拿工资!
- 微信的WXML和HTML WXSS和CSS的区别详解
热门文章
- QString string int double char 相互转化
- mac常用设置(新建、显示隐藏文件、任意位置开启终端等)
- export ‘Switch‘ (imported as ‘Switch‘) was not found in ‘react-router-dom‘
- LeetCode(589)——N叉树的前序遍历(JavaScript)
- 返回封装结果集Result
- 操作系统的发展与分类
- 为了有一些储蓄,把自己压榨到最狠的时候是怎样的?
- 新房装修有哪些除味小妙招?
- 今天和朋友去参观一家做电商创业公司
- 赚钱这件事并不难,难的是你没有搞懂这个思维?