zoukankan      html  css  js  c++  java
  • [Thinking] 为什么要使用getter/setter

    成员变量须私有化,是面向对象基本思想之一。
    几乎每本讲到面向对象编程的书里,都会告诉读者“类的成员变量一定要定义为私有的(private)”

    变量私有化的好处

    1. 在setter中可以加入合法性检查,比如设置颜色的函数中,对于RGB颜色要判断其值在0~255之间。

    2. 更新与被设置变量相关的其它变量的值,比如在一个潜水艇模拟系统中,改变了其水下深度时,要相应的更新所受压强。

    3. 在debug时,可以在其中,尤其是在setter中加入追踪log。

    4. 在多线程环境中,如果要保护对象的并发访问,则必须在getter/setter中加入同步锁。

    所以,可以看出使用getter/setter访问私有变量是很有道理的。但笔者认为,我们不应该被这个思想完全禁锢了。

    什么时候可以公开变量

    例如我们要提供一个保存个人信息的类,要保存姓,名,出生日期,民族,国籍,身份证号等等二三十个信息,并且这个类只供自己的代码访问,不会开放出去。
    那么,与其写二三十个getter/setter,不如直接把这些变量定义为公开的更方便。

    对比变量私有化的几个好处:1.我们可以在用户输入个人信息来做合法性检查,2.个人信息之间也不会产生依赖关系,3.log和锁可以加在外部访问处。

    这样的写法让代码变的简洁,变量仅供自己访问又不会造成后续的麻烦。

  • 相关阅读:
    每日一模块:操作execl表格openpyxl
    python爬虫-通过api获取所在城市的天气
    机器学习(一):模型评估指标
    机器学习(二)-信息熵,条件熵,信息增益,信息增益比,基尼系数
    Anaconda安装及R环境配置
    VCF文件-VCFv4.2示例解释
    CPRIMER CHAP13
    R语言-ggplot原点设置
    c++11 多线程简介
    相关系数
  • 原文地址:https://www.cnblogs.com/every2003/p/2574517.html
Copyright © 2011-2022 走看看