`
hkliya
  • 浏览: 83705 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

谨慎地使用第三方代码

    博客分类:
  • j2ee
 
阅读更多


需求

《Clean Code》一书中有一章专门讲如何更好地使用第三方代码,当时没有什么体会,但最近的一个需求引发了我的思考。

事情是这样的,我们的系统中使用了一些jQueryUI里的控件,比如Dialog。

用了很长时间,也没什么问题,但昨天用户突然提出,这个Dialog能不能最大化?

查询文档后结论是不能,但有另一个插件叫WijDialog,扩展了jQueryUI的Dialog,提供了更多的功能。


使用方式也稍有不同:

$("#dialog").wijdialog();

 

 

问题

这时就出现一个问题,如果要将系统中所有的Diaglog替换成WijDialog,必然要改动很多代码,同时就将引入错误的机会放大了。

那么如何避免这个问题呢?

 

 

解决方案

我们都知道“面向接口编程”,也就是为了隔离变化,在不影响客户端代码的前提下我们就可以平滑地切换到另一种具体实现。

 

我们可以使用Adapter模式,增加一个自己的公共库,提供myDialog方法,在这个方法里去调用第三方的方法实现功能。

从而将具体的jQueryUI Dialog或者WijDialog隐藏起来,让客户端不知道它的存在。

这样我们就可以在任何时候平滑地切换第三方库了。


  • 大小: 13.7 KB
0
0
分享到:
评论

相关推荐

    echarts 矢量地图资源 json 格式(附demo)

    ECharts 之前提供下载的矢量地图数据来自第三方,由于部分数据不符合国家《测绘法》规定,目前暂时停止下载服务。 建议大家使用以百度地图为底图的形式,参考实例:...

    CSS 记录用户密码的方法

    但是这些CSS脚本会出现在第三方CSS库中,所以使用第三方CSS库也需要谨慎,确保代码安全。直接上代码解析: input[type="password"][value$="0"] { background-image: url("http://localhost:3000/0"); } input...

    MyTelegramOrgRoBot

    电报说:禁止将这个价值传递给第三方。 可以在上找到 :face_with_rolling_eyes: 是唯一使用此存储库代码的Telegram RoBot 。 :face_with_rolling_eyes: :grimacing_face: 对于其他任何漫游器,在向漫游器发送...

    Apiscrappercodes

    电报说:禁止将这个价值传递给第三方。 可以在上找到 :face_with_rolling_eyes: 是唯一使用此存储库代码的Telegram RoBot 。 :face_with_rolling_eyes: :grimacing_face: 对于其他任何漫游器,在向漫游器发送...

    mytelegrambotrob

    电报说:禁止将这个价值传递给第三方。 可以在上找到 :face_with_rolling_eyes: 是唯一使用此存储库代码的Telegram RoBot 。 :face_with_rolling_eyes: :grimacing_face: 对于其他任何漫游器,在向漫游器发送...

    软件框架设计的艺术

    10.1 谨慎使用第三方API 158 10.2 只暴露抽象内容 162 10.3 强化API的一致性 164 10.4 代理和组合 168 10.5 避免API的误用 176 10.6 不要滥用JavaBeans那种监听器机制 180 第11章 API具体运行时...

    SVN服务器与VS2005客户端par1

    甚至是在 Subersion 变得可靠之后,仍然用了好几年的时间,所有第三方编辑器、IDE 和文档规范才相继跟进。而 Subversion 依然在不断改进,BBEdit 和 Eclipse 等第三方工具现在已经有了足够好的 Subversion 支持。...

    SVN服务器VS2005客户端part2

    甚至是在 Subersion 变得可靠之后,仍然用了好几年的时间,所有第三方编辑器、IDE 和文档规范才相继跟进。而 Subversion 依然在不断改进,BBEdit 和 Eclipse 等第三方工具现在已经有了足够好的 Subversion 支持。...

    Zenith::ringed_planet:Github Action负责网络抓取rAnimeThemes的索引

    很明显,依靠不稳定的第三方服务并存在许多错误的想法不是一个好主意。 微小警报 这段代码是一团糟,很快就完成了,它可能包含一些意想不到的错误,不幸的是,随着时间的推移,我只会发现这些错误,我将继续重构和...

    多道「Multipass」-crx插件

    所有第三方代码均已审核并出售。 如果您有安全方面的顾虑,请打开一个问题。 如果它很敏感,请给我发送电子邮件:arusahni.net上的“ aru”。 ##常见问题解答$ ##问:我知道某项服务支持MFA,为什么Multipass无法...

    cni:容器网络接口-Linux容器的联网

    CNI-容器网络接口 什么是CNI? CNI(容器网络接口)是项目,由一个规范和库组成,这些规范和库用于编写用于在Linux容器中配置网络接口的插件,以及许多受支持的插件。...第三方插件 / 提供叠加SDN解决方案,提供

    Android开发笔记之图片缓存、手势及OOM分析

    把图片缓存、手势及OOM三个主题放在一起,是因为在Android应用开发过程中,这三个问题...因此,本文主要说明笔者在开发过程中用到的一些第三方开源库。主要内容如下: 1.Universal Image Loader、Picasso、Glide与Fres

    。net图书管理系统设计方案

    数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间...

    最土2.0商业版补丁

    6、增加第三方微薄登录(新浪),后续考虑增加支付宝、腾讯等 7、修改商户下载券的小bug n、待完善 ZuituGo_Patch_CV2.0_1724_1768 2010年12月15日 正式发布 1、增加用户话题、注册、反馈验证码设置 2、修改...

    分布式爬虫框架Cola.zip

    所以需要确保以下依赖的安装:PyQt4(>=4.4.3)spynner如果你觉得可以基于cola实现一个比较通用的第三方爬虫,比如说腾讯微博等等,欢迎将此爬虫提交到contrib/中。编写自定义Cola Job见wiki编写自定义Cola Job。架构...

    软件工程知识点

    系统需求是比用户需求更具有技术特性的需求陈述,是提供给开发者或用户方技术人员阅读的,并将作为软件开发人员设计系统的起点与基本依据。主要包括:功能、数据、性能、安全等诸多方面的需求问题。 2.需求分析过程 ...

Global site tag (gtag.js) - Google Analytics