重构数据-Encapsulate Field封装值域九

news/2024/6/17 16:04:48

重构数据-Encapsulate Field封装值域九

1.封装值域

1.1.使用场景

将数据封装为私有,防止其他对象修改数据。

面向对象的首要原则之一就是封装(encapsulation),或者称为「数据隐藏」(data hidding)。按此原则,你绝不应该将数据声明为public,否则其他对象就有可能访问甚至修改这项数据,而拥有该数据的对象却毫无察觉。

public 数据被看做是一种不好的作法,因为这样会降低程序的模块化程度(modularity)。如果数据和使用该数据的行为被集中在一起,一旦情况发生变化,代码的修改就会比较简单,因为需要修改的代码都集中于同一块地方,而不是星罗棋布地散落在整个程序中。

1.2.如何做

  • 为public字段提供取值/设值函数。
  • 找到这个类以外使用该字段的所有地点。如果客户只是读取该字段,就把引用替换为对取值函数的调用;如果客户修改了该字段值,就将此引用点替换为对设值函数的调用。
  • 如果这个字段是个对象,而客户只不过是调用该对象的某个函数,那么无论该函数是否改变对象状态,都只能算是读取该字段。只有当客户为该字段赋值时,才能将其替换为设值函数。
  • 每次修改之后,编译并测试。
  • 将字段的所有用户修改完毕后,把字段声明为private。
  • 编译,测试。

1.3.示例

 public String _name

为 _name 属性提供访问和设置方法,同时将它设置为私有。

 private String _name;
 public String getName() {return _name;}
 public void setName(String arg) {_name = arg;}

http://www.niftyadmin.cn/n/167816.html

相关文章

Android开发之给apk签名

前言最近360加固助手签名突然收费了,加固完后要自己签名了。在此记录一下自己使用命令行签名步骤。正文首先在安装Android Studio的情况下找到SDK安装目录,在build-tools目录下有自己下载的SDK版本,随便打开一个版本,找到apksigne…

CKA认证考试难不难?考试内容是什么?

我们的社会在不断进步,市场对于人才的要求也越来越高,而随着第四次工业革命的发展,各个国家都在奋力研发信息通讯技术,旨在为了能够获得最先进的技术,而CKA则是非常重要的一项。CKA认证考试是由Linux基金会和云原生计算…

SkyWalking 日志收集

SkyWalking 日志收集一、需求二、步骤2.1 pom文件引入依赖2.2 logback-spring.xml文件修改2.3 修改agent的配置文件2.4 启动java应用2.5 日志查看三、验证四、常见问题4.1 修改完logback配置文件,项目启动报错4.1.1 错误4.1.2 解决4.2 UI的log页面没有内容一、需求 …

系列文章 之 一文纵览【机器学习】必备步骤,祝(助)你(我们) 科研/实验 不再踌躇

金风玉露一相逢,便胜却、人间无数 平岗上,长巷里,人至不去,只愿为君转轴拨弦三两声 只愿见君素衣文扇倾依旧 青青子衿,悠悠我心,唯梦闲人,却不梦君。 虽千万人,吾往矣. &#x1f…

Scala安装及设置查看源代码

文章目录一、安装Scala环境1.1、下载Scala1.2、配置scala环境变量1.3、测试是否安装成功二、idea配置Scala三、配置查看scala包的源码一、安装Scala环境 1.1、下载Scala 这里例举安装scala-2.12.10 scala官网选择全部版本寻找到相应的版本 进去后选择这两个下载一个为安装包、…

【前端八股文】JavaScript系列:Array方法

文章目录创建数组Array.fromcopyWithinfill排序与查找sort原理findfindIndex对原数组有影响对原数组无影响参考本系列目录:【前端八股文】目录总结 是以《代码随想录》八股文为主的笔记。详情参考在文末。 代码随想录的博客_CSDN博客-leecode题解,ACM题目讲解,代码随…

Linux基础内容(14)—— 基础IO与文件描述

Linux基础内容(13)—— 进程控制https://blog.csdn.net/m0_63488627/article/details/127932919 目录 1.文件的基本知识 2.不同软件的文件操作 1.C语言的文件操作 2.系统调用接口 3.文件的相关概念 4. Linux下一切皆文件 1.文件的基本知识 1.空文…

在 Python 中替换字典中的值

使用 dict.update() 方法替换字典中的值,例如 my_dict.update({key: new value})。 dict.update() 方法使用提供的值中的键值对更新字典。 my_dict {name: default,site: default,id: 1,topic: Python }my_dict.update({name: 迹忆客,site: www.jiyik.com} )# &am…