首页 > 其他分享 >【技术分享】面向对象开发系列之【封装】

【技术分享】面向对象开发系列之【封装】

时间:2023-02-16 21:13:26浏览次数:27  
标签:封装 变量 程序开发 面向对象 内聚 分享 数据

封装

理解

封装是面向对象程序开发的基石。

程序开发,最核心价值,是数据。
程序其实是读取数据,操作数据,保存数据等一系列操作。
那么经过良好组织过的数据,将使编程事半功倍。

高内聚,低耦合

说到数据,经常挂在嘴边的,就是这句高内聚,低耦合了。
这并不是绝对规则。高和低是程度副词。我们要尽量高内聚,尽量低耦合。
对于初学者,这一句话,可能就懵了。不同的人,有不同的评价标准。那么什么样算是高,什么样算是低呢?

1. 一个数据只让一个对象进行管理。

避免公开的全局变量。如果一个数据开放程度过大。就难保不会有人想要偷懒,直接读取/设置。
当管理这个数据的人过多,那么想要对这个数据进行升级、优化,会大概率导致其他模块被迫修改。
不符合面向对象开发的价值观。

2. 同样的数据不在多处进行管理。

如果一个程序里面,有多个地方保存了同一个数据,例如当前是不是白天“isDay1”,"isDay2"。
那么当有开发新的功能时,有的人用了变量1,有的人用了变量2。很容易出现数据不一致的情况。
一定要逼着再开发第三个程序段,用于保证isDay1和isDay2保持同步?那岂不是自己给自己添堵!
所以,同样的数据,不要在多个地方进行管理。

3. 能通过其他数据计算出来的数据,不要重复保存。

在程序开发中,经常还会出现一种情况。那就是可以通过计算出来的数据,还要再拿一个变量进行保存。

class DayNightControl
{
    bool isDay;      // 当前是否是白天
    bool isNight;    // 当前是否是黑夜(这个数据就是重复)
}

当前是否是晚上,可以通过!isDay获得,那么就不要再重复记录isNight。这是一个一眼就能看出问题的例子。
还有很多隐藏的情况。

例如:某个控件是否显示。显示条件可能由A,B,C三个条件控制。本可以通过A&&B&&C进行计算得出。此时额外增加一个visible变量,就会给后续的程序维护造成麻烦。

标签:封装,变量,程序开发,面向对象,内聚,分享,数据
From: https://www.cnblogs.com/girakoo/p/17128321.html

相关文章

  • 【技术分享】Android系统版本代号一览
    Android系统版本代号一览VersionCodeNameAPI时间11.0R/11302020.0910.0Q/10292019.059.0P/(Pie)282018.088.1O_MR1272017.128.......
  • 【技术分享】C++编译中常用的内置宏
    C++编译中常用的平台宏针对不同的平台,很多头文件,函数名称,类型占用空间不一致。为了保证跨平台可编译,经常需要在项目中使用宏进行区分平台宏操作系统可使用的宏......
  • 【android】音视频开发五:学习MediaExtractor 和 MediaMuxer,知道如何解析和封装 mp4 文
    MediaExtractorMediaExtractor顾名思义就是多媒体提取器,主要负责:获取媒体文件的格式,包括音视频轨道,编码格式,宽高,采样率,声道数等,分离音频流,视频流,读取分离后的音视频数据......
  • ASEMI中低压MOS管18N20参数,18N20封装,18N20尺寸
    编辑-ZASEMI中低压MOS管18N20参数:型号:18N20漏极-源极电压(VDS):200V栅源电压(VGS):±30V漏极电流(ID):18A功耗(PD):83W储存温度(Tstg):-55to150℃静态漏源导通电阻(RDS(ON)):0.18Ω......
  • 八股文面试题,分享还不知道的你们~
    最近看到这个八股文面试总结题,感觉挺不错,先整理下来,做学习记录~对应自己各阶段的学习内容和检验掌握程度感觉挺不错。(注:资料来源于网络,感谢作者的辛劳,侵权删~)一、ja......
  • 项目返回值的封装
    publicclassResult<T>{privateintcode;//状态码privateStringmsg;//返回的信息privateTdata;//返回的数据/***成功时候......
  • 自己封装vue echart组件 方便调用
    <template><div><divref="lineChart":style="{width:width,height:height}"></div></div></template><script>importechartsfrom'echar......
  • Axios封装
    实现功能:针对不同请求设置token、code不为成功时的信息提示、code异常情况下的异常处理、屏蔽某些接口、简洁的数据结构响应缺点:1.status为200时,code为401时不会进行无感......
  • 封装axios 到文件 request.js
    importaxiosfrom"axios";import{Message}from"element-ui";//拿token有2种方式:方式1:读取vuex的state;方式2:读取cookieimportstorefrom"@/store";impor......
  • 面向对象的三大特征
    封装程序设计中追求“高内聚,低耦合”,主要细节由自己操作,不让外部操作;只留少量方法给外部操作;属性私有,get/set:用private关键字设置属性为私有属性,用get来获得这个数据,ge......