当我们在项目中需要实现一个功能,而这个功能在其它地方已经得到了实现,
但是我们又不能直接调用实现那个功能的方法,有两种情况:
一.是我们根本就访问不到那个类,也就无从去调用原有的方法实现。
二.是那个功能方法的实现对当前的功能不是很适合,比如原来的功能实现和
当前的功能实现的“业务逻辑”不一样,导致我们不能直接使用原有的实现方法。
通常情况下,我们都会将原来的那段代码拷贝过来,然后加以修改供我们
现在的方法来使用,但这样做无异于“重新制作轮子”,那么我们该怎么办呢?
间接访问:
对于第一种情况,我们不能直接去调用那个功能的代码,但我们千万不能将
这个代码修改一下再封装成我们自己的代码来使用。这样做无异于重新“制作轮
子”,对于别地方的“轮子”,我们无法直接访问,那就看我们那个“轮子”所在
的地方是否提供了服务的类或共有的接口,然后看我们的代码能否调用到这个服务。
如果能调用这个服务的话,在这个服务中添加一个方法来间接的调用那个“制作轮
有很多时候,别人写好的代码我们不能直接的使用,但我们又无法访问到这
个类,有时我们就会将这个代码粘贴到自己能访问到的类中,加以修改然后使用。
这样做虽然解决当前的问题,但并没有利用别人写过的代码,有的人会说 “我压
根就访问不到这个类!”遇到这种情况,我们要做的是看有没有一个隐式的桥梁
(通常指接口或服务),只要我们能访问到这个桥梁,这个桥梁能访问到那个类。
这样问题就解决了。
代码解耦:
对于第二种情况,就要理清那个代码的“业务逻辑”和“功能方法”,如果
那个代码的“功能方法”能够被我们所使用,那么我们所要做的事情就只有一项,
将原来的代码“解耦”,解到我们和原有的代码“业务逻辑”都可以访问解耦后的
“功能性方法”。这样无论是 原来的业务 还是 现在的业务 都可以顺利的完成我
们想要做的事情了。
对于这里,如果原来的代码能够做到,“业务逻辑”代码与“功能”代码独立
出来,就不会造成现在的事情。所以我们在写一个方法的时候尽可能的考虑到会不会
有其它的业务来调用当前的方法,写一个通用的方法出来,将不通用的部分封装。即
使我们考虑不那么周全,那么只要做到一点就可以避免这样的情况,那就是:写功能
单一的方法 请参见《写功能单一的方法》
分享到:
相关推荐
一种带有减震功能的轮子的制作方法.docx
使用CAKeyFrameAnimation类制作出的轮子转动效果,超简单易懂!
一种易于更换的箱包轮子的制作方法.docx
一种导电及抗静电的轮子的制作方法.docx
一种带轮子滑动的手动涂刷的制作方法.docx
一种用于托盘式搬运车的可调高度轮子结构的制作方法.docx
用于使轮胎就位在轮子上的气动轮胎就位器的制作方法.docx
一种利用牵引丝传动的轮子定向及刹车锁定机构的制作方法.docx
maya车轮子,用各种界面制作的maya车轮子,请使用哈哈
造轮子的目的,不是去重复的发明轮子,而是实际的去动手制作轮子。把一些公认的算法,优秀的思想,用自己的方式表达一下,锻炼一下,让知识成为自己思想的一部分。而不总是去google去百度,xxx好还是zzz好,而是能够...
简易机器人制作全文共6页,当前为第1页。简易机器人制作全文共6页,当前为第1页。简易机器人制作 简易机器人制作全文共6页,当前为第1页。 简易机器人制作全文共6页,当前为第1页。 制作机器人是个循序渐进的过程,从...
数学知识考试试卷及答案
三轮全向轮的结构设计,需要三个轮子每两个轮子之间相差120度,车轮的安装方式决定了我们的运动学模型。 机器人控制的基础是运动学分析,利用运动学分析,可以得出机器人运动过程中各类参数的变化规律和相互之间 的...
主要是对使用gopup库要用到的一些常用,从作者文档中整理并且对其增加内容后,制作的U学习笔记,其中有很多应用,包括疫情数据和豆瓣热榜的爬取,使用简单获取内容方便
Godot 2D和3D跨平台游戏引擎源码,可以自己编译使用,...无需重新发明轮子。一键即可将游戏导出到 平台数量,包括主要的台式机平台(Linux,macOS, Windows),移动平台(Android,iOS)以及基于Web的平台 (HTML5)。
它提供了一个 一套全面的常用工具,让用户可以专注于制作游戏 无需重新发明轮子。游戏可以一键导出到 平台数量,包括主要桌面平台(Linux、macOS、 Windows),移动平台(Android,iOS)以及基于Web的平台 和控制台...
源码实现怎样制作类似滚动轮子的封面流转的效果。在转动封面流转时,很多视图的轮子滚动进行互相切换显示的效果,是一个不错的学习例子,喜欢的朋友可以下载学习一下。。
想必你一定使用过易企秀或百度H5等微场景生成工具制作过炫酷的h5页面,除了感叹其神奇之处有没有想过其实现方式呢?本文从零开始实现一个H5编辑器项目完整设计思路和主要实现步骤,并开源前后端代码。有需要的小伙伴...
您不需要重新设计轮子,已经描述了一些重复的代码部分(主循环,获取增量时间,关闭窗口,绘制文本...),并可以在默认引擎中使用。 用法示例: 模板主文件 from laylib import Environment from engine import ...
不要重新发明轮子。 代码是从HTML5 Boilerplate,语义网格,LESS Hat等中包含的,或受其启发,然后我们捆绑了一组精心选择的默认值。 Gruntfile具有一些基本任务,可以处理文件观看和实时重载,Less&CSS,Javascri