`

不要重新 制作轮子

 
阅读更多

 当我们在项目中需要实现一个功能,而这个功能在其它地方已经得到了实现,
但是我们又不能直接调用实现那个功能的方法,有两种情况:
 一.是我们根本就访问不到那个类,也就无从去调用原有的方法实现。
 二.是那个功能方法的实现对当前的功能不是很适合,比如原来的功能实现和
当前的功能实现的“业务逻辑”不一样,导致我们不能直接使用原有的实现方法。

 通常情况下,我们都会将原来的那段代码拷贝过来,然后加以修改供我们
现在的方法来使用,但这样做无异于“重新制作轮子”,那么我们该怎么办呢?
 
 间接访问:
 对于第一种情况,我们不能直接去调用那个功能的代码,但我们千万不能将
这个代码修改一下再封装成我们自己的代码来使用。这样做无异于重新“制作轮
子”,对于别地方的“轮子”,我们无法直接访问,那就看我们那个“轮子”所在
的地方是否提供了服务的类或共有的接口,然后看我们的代码能否调用到这个服务。
如果能调用这个服务的话,在这个服务中添加一个方法来间接的调用那个“制作轮
  

有很多时候,别人写好的代码我们不能直接的使用,但我们又无法访问到这
个类,有时我们就会将这个代码粘贴到自己能访问到的类中,加以修改然后使用。
这样做虽然解决当前的问题,但并没有利用别人写过的代码,有的人会说 “我压
根就访问不到这个类!”遇到这种情况,我们要做的是看有没有一个隐式的桥梁
(通常指接口或服务),只要我们能访问到这个桥梁,这个桥梁能访问到那个类。
这样问题就解决了。

 

 代码解耦:


 对于第二种情况,就要理清那个代码的“业务逻辑”和“功能方法”,如果
那个代码的“功能方法”能够被我们所使用,那么我们所要做的事情就只有一项,
将原来的代码“解耦”,解到我们和原有的代码“业务逻辑”都可以访问解耦后的
“功能性方法”。这样无论是 原来的业务 还是 现在的业务 都可以顺利的完成我
们想要做的事情了。


 对于这里,如果原来的代码能够做到,“业务逻辑”代码与“功能”代码独立
出来,就不会造成现在的事情。所以我们在写一个方法的时候尽可能的考虑到会不会
有其它的业务来调用当前的方法,写一个通用的方法出来,将不通用的部分封装。即
使我们考虑不那么周全,那么只要做到一点就可以避免这样的情况,那就是:写功能
单一的方法 请参见《写功能单一的方法》

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics