首页
学习
活动
专区
圈层
工具
发布

Getter & Setter:使用还是废弃

然而,为什么程序员们都自动在对象中加入getter和setter方法,以此对外暴露私有变量,就如同这些变量是公有的一样?...Getter和Setter使得API更加的稳定。 比如,假设类中有一个公共属性,它可以被其他类直接存取。一段时间后,你想要在读取或保存这个公共属性的时候添加额外的逻辑。...以这种方式使用的Getter和Setter通常破坏了封装性。 一个真正完整封装的类是没有setter方法的,而且最好也没有getter方法。...这些完全无意义的getter/setter代码有时会比类的逻辑代码本身还要长,你会多次阅读这些代码,虽然你并不想这么做。 所有的属性都应该保持私有,但对不可改变的属性仅仅增加setter方法。...但是,为每一个属性都创建getter和setter方法确实有些极端。而且这也要根据具体的情况来定,有些时候你仅仅希望有一个单纯的数据对象而已。应该为真正需要的属性添加存取方法。

1.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    盘点JavaScript中getter()和setter()函数的使用

    它们本质上是用于获取和设置值的函数,但从外部代码来看就像常规属性。 二、Getter 和 setter 访问器属性由 “getter” 和 “setter” 方法表示。...三、访问器描述符 例: 要使用 defineProperty创建一个 fullName访问器,可以使用 get和 set来传递描述符: let user = { name: "John", surname...四、更聪明的 getter/setter Getter/setter 可以用作“真实”属性值的包装器,以便对它们进行更多的控制。...五、兼容性 访问器的一大用途是,它们允许随时通过使用 getter 和 setter 替换“正常的”数据属性,来控制和调整这些属性的行为。...六、总结 本文基于JavaScript基础,介绍了getter 和 setter函数的使用。对于其中的属性,通过案例的样式,运行效果图的展示,进行详细的讲解。

    2.1K11

    TW洞见〡getter和setter的那些事

    这些以get和set开头的方法,被称为getter和setter。时间久了,这种做法似乎成了一种神圣的约定,每个人都记得应该这么写,而忘记了为什么这么写。...但是,当你写了很多程序,写过很多getter和setter,尤其是有些类方法,只有getter和setter时,总会有一天,你会疑惑,我到底为什么要这么干? Why private field?...如果直接将内部数据字段暴露出来,比如上面这段代码中的name,如果某天有一个新的需求,要求所有名字都用大写字母表示,就只能添加一个新的接口upperName,而使用name的地方,需要修改调用方式。...Why getter & setter, again? 然而,却并不是所有语言都是这样的。比如和Java最像的C#,虽然也建议将字段设置为private,但是却可以不用getter和setter。...lombok提供了很多方便的注解来帮助Java程序员减少冗余代码。比如下面这段代码: ? 使用lombok,等价于下面这段代码: ? 看起来还不错。

    1.1K60

    Groovy 创建索引属性Getter和Setter方法

    在Groovy中,我们可以在类中定义属性,并自动在类文件中生成这些属性的getter和setter方法。 如果我们有一个Collection类型属性,我们通常会获得此属性的get/set方法。...PropertyElement[] getPropertyName() public void setPropertyName(PropertyElement element[]) 通常,如果我们在Groovy代码中使用我们的类...,我们不需要那些额外的方法,因为我们可以通过GPath来访问和设置Collection类型属性中的元素。...但是假设我们的类需要从Java代码或IDE访问,我们需要这些额外的方法。...我们只需要将@IndexedProperty注释添加到我们的属性中,我们就可以得到我们想要的额外的getter和setter方法: import groovy.transform.IndexedProperty

    2.1K10

    【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )

    文章目录 一、Java 类成员及 setter 和 getter 方法设置 二、Groovy 类自动生成成员的 getter 和 setter 方法 一、Java 类成员及 setter 和 getter...方法设置 ---- 创建标准的 Java 类 , 需要将成员变量设置为私有成员 , 并且为其定义 getter 和 setter 方法 ; class Student { private String...class Student { def name def age } 在 Groovy 中的类中 , 不需要定义成员变量的 setter 和 getter 方法 , Groovy 会自动生成相关的...(18) // 使用 getter 方法获取成员值 println student.getName() println student.getAge() 执行结果 : Tom 18 查看编译后的 Student.class...字节码文件 , 可以看到系统为 Student 类自动生成了 getter 和 setter 方法 ; 完整的字节码类如下 : // // Source code recreated from

    1.7K30

    通过getter和setter方法访问和修改

    firstName; private String lastName; public String getName(){ return firstName + "" + lastName; } 2.setter...方法可以执行错误检查,比如检查数据是否合乎规范,输入的age是否小于0,直接对域操作则没这种优势 3.可细微划分访问控制:可以只设置域访问器getter,不设置域修改器setter,让用户只能读取,而不能修改...即同一个方法的调用,可以根据调用这个方法的对象的不同而实现不同的功能。...多态的作用:降低类型之间的耦合关系。 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。..., DB2Dao等等 当用户使用你框架的时候,他就可以用多态,实现自己的数据库连接功能: DaoBaseDao dao = new SQLServerDao(); //针对SQLServer的接口实现

    1.1K30

    寻找性能更优秀的动态 Getter 和 Setter 方案

    方案说明 就是用表达式编译一个 Action 作为 Setter,编译一个 Func 作为 Getter。...然后把这些编译好的委托放在一个泛型类的静态字段中保存起来,需要使用的时候从这里面查找就可以了。...知识要点 使用表达式创建委托 泛型类的静态字段是每个闭合类型独立的,因此用于存储和类型相关的内容非常方便 实现代码 由于代码中混合的使用 Switch 作为字典的阴招,所以代码很长,此处不再罗列,仅给出链接...如果属性是明确的,建议把字典中取出来的委托保存在自己的上下文,这可以明显的省去查找的消耗。 图表 从左往右分别是:直接读取属性、缓存委托、不缓存委托和使用 PropertyInfo。...0.1.4 发布,初始版本 使用样例 Newbe.ObjectVisitor 样例 1 番外分享 寻找性能更优秀的动态 Getter 和 Setter 方案 寻找性能更优秀的不可变小字典 GitHub

    69100

    iOS中setter方法 、getter方法、点语法、@property

    属性概念 属性是OC的一项特性,用于封装对象中的数据 OC对象通常会把其所需要的数据保存为各种属性 属性通过存取方法来访问(setter、getter) 例如:在Person类中定义了2个属性 通过...,是一个编译器的特性,编译器会把“点语法”转换为对存取方法的调用,使用点语法和直接调用存取方法的效果一致。...点语法在等号左边,那么编译器会自动转换为setter方法,点语法在等号右边或没有等号,那么编译器会自动转化为getter方法 Person *per = [[Person alloc]init];...getter、setter方法 readonly: 属性拥有getter方法 内存管理关键字 assign:用于修饰数值类型,是简单赋值操作 strong:为这种属性设置新值时,设置方法会先保留新值...on; setter=:指定设置方法的方法名,这种用发不常见,此处不做太多解释

    45510

    java里getter和setter的作用和区别是什么?

    java是典型的面向对象的编程语言,面向对象三个特性,继承性,多态性,封装性,主要和封装性考虑,类里面的变量不想设置成公共的类型,但是还要给外部使用在这种实用场景下,从编程技巧上加上方法来获取或者设置参数值...,于是getter和setter就使用上了。...增加两个方法保证了类结构的完整性以及安全性还是非常合算的做法,其实从框架上考虑增加这两个方法还能在实际编程过程中增加额外的功能作用,现在就根据实际编程中的经验做一些总结归纳: 1.可以通过setter方法检查下数据的准确性...,比如是否越界之类的异常等等 2.可以在setter方法里面加上一些功能函数,主要在限定一些条件如果数值达到一定范围之后就开始做某些动作,选择的时机点正好在这个方法里面。...3.加入涉及到多线程的操作,在setter方法里面正好做加锁的操作,正好是一个恰当的时机 4.由于是关键数值的变化,在这两个方法中加上打印非常适合追踪数据的变化,方便程序的判断。

    2.1K30
    领券