您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

代码封装技巧和原则

时间:2020-07-26 11:55:06  来源:  作者:

实际开发过程中,一个系统会出现一个服务可能有N多个地方会需要使用,这个时候我们就会需要去将服务封装成一个公共的Class,但是倘若封装的不够完美,那么这个服务Class也将成为系统的鸡肋。下面我说的封装的思路,对于前段和后端开发都适合。

封装的原则

1、能够解决95%~99%的系统场景(也就是除了解决现在的问题,还能够支持将来可能出现的问题)

2、体现自己的核心处理能力(核心能力基本上不会去改变)

3、当服务改变或者升级时,对于老的调用方无感知,能够做到无需调整

封装的核心

代码封装技巧和原则

 

举个生活中的栗子

生活中存在很多电器设备,每个电器设备都需要使用电,而且每个电器都会有插头,通过插头插入插线板,那么机器就可以运转。下面做个名词的对应:

调用方:电熨斗(三眼插头)、电视机(两眼插头)

服务方:供电设备

核心能力:供电

Handler:家里的插座

电熨斗和电视机需要运转,就需要用到电器设备,而电器设备里面的Handler就是插座,电器设备的核心能力就是供电。由于调用方出现了不同的插头类型,所以插座的出现就是为了解决兼容的问题。插座的主要作用就是自身设计了两种传参——两眼插孔和三眼插孔,不同的设备接入对应的插孔,这样就可以享受到供电的服务。

问题1:如果出现四眼插头的设备怎么办?

回答:我们要做的其实就是新增一个对于四眼插头的支持,也就是对应的新增一个四眼插孔,这样对于老设备来说无需任何调整,仍然可以毫无影响的在原来的插座上享受供电服务。

问题2:如果出现供电升级怎么办?

回答:供电设备内部硬件升级,做到对于老设备的0影响。比如电压由220V变成了280V,如果供电设备不做调整,那么对于老的设备来说可能直接会被高电压烧毁。但是如果你要去设备自身调整成适配280V电压,那么无疑是一个巨大的工作量。

举个前端开发中的栗子

调用方:A页面,数据包结构A;B页面,数据包结构B

服务方:级联插件

核心能力:级联

Handler:数据包处理

var _Plugin = {

open: function(args) {

//实现级联功能

}

}

由于A页面和B页面都使用到了级联插件,但是各自传参数据包都不一样。所以我们在封装插件时,就需要考虑将差异化做到插件内部去处理。针对单个业务场景来说,既然要做到区分,我们就需要利用一个字段来处理,常用的手段是定义一个type传参,值类型为数字,不同的数字代表不同的数据包;其次定义传入的数据包的key,一般来说为了方便识别,key的命名就定义为data。所以上面的open方法的传参设计例如:

var args = {

type: 1, //区分业务场景

data: {}, //传入的数据

}

问题1:如果出现C页面,传入C数据包怎么办?

回答:type值多加一个用于区分C页面的调用。

问题2:级联插件更改怎么办?

回答:根据新的插件要求,内部做处理。比如原来的插件需要dt_1这样的数据结构,但是新的插件需要dt_2这样的数据结构,那么就在内部将原来的A、B.....处理成dt_2数据包结构

问题3:A、B数据包可以直接利用,但是C数据包不行,怎么办?

回答:内部将C处理成需要的数据结构

问题4:已经有N个页面调用了open方法,但是为了满足更多业务场景,需要对open的传参做调整,怎么办?

回答:利用方法重载的思路进行内部方法的改造,比如创建一个新方法open_new,它的传参是按照新的要求设计的,那么对于老的页面都在调用open方法,我们就必须将open的内部实现做调整,比如:

var _Plugin = {

open: function(args) {

//对args做处理,生成新的传参argsNew

 

args --> argsNew

 

open_new(argsNew);

},

open_new: function(argsNew) {

//实现级联功能

}

}



Tags:代码封装   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
实际开发过程中,一个系统会出现一个服务可能有N多个地方会需要使用,这个时候我们就会需要去将服务封装成一个公共的Class,但是倘若封装的不够完美,那么这个服务Class也将成为系...【详细内容】
2020-07-26  Tags: 代码封装  点击:(58)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条