发布于2021-09-19 22:47 阅读(78) 评论(0) 点赞(12) 收藏(5)
请在推荐我发布此类帖子之前阅读,我问的是一个非常具体的案例:
为什么要使用 getter 和 setter/accessors?
当我能够使用 setter 方法更改属性值时,封装有什么用?
让我们以一个 JAVA JEE 应用程序为例,那些基本上是网站。您的银行网站可能是一个 JAVA JEE 应用程序。
在那些方面,我们通常是一个由 10-15 名开发人员组成的团队,除了我们之外没有人使用我们的代码,没有人导入我们的包并使用我们的对象。
后端通常有 DAO 来访问数据库和 Value 对象以将数据传输到表示层。
VO 是实体的完美副本,例如:
公共类 UserVo {
private String name;
private String email;
private String password;
public UserVo(String name, String email, String password) {
this.name = name;
this.email = email;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
所以你得到一个实体,你将它转换为 VO 以进行“层分离”(我也没有看到这一点,因为如果你改变了一个实体,你就改变了 VO,然后你就改变了使用该 VO 的表示层中的代码但是无所谓)
首先,VO 应该是不可变的,但在我为之工作的所有项目中,它们都是可变的。
我的问题是:这里有 getter/setter 有优势吗?
里面没有逻辑,有些人会告诉你 setter 可以做一些验证,但这没有用,因为我们所有的代码都经过单元测试,所以不需要验证 setter 中的任何内容。
由于所有属性都有一个 get/set,因此它们与公共属性完全相同。
当实现更改时,getter/setter 也会更改,并且所有使用旧 getter/setter 的代码都被重构/修改。
我经常被告知数据隐藏,用户将无法访问私有财产:什么?用户正在浏览网站。
那么,为什么每个人都如此依恋那些 getter/setter?如果我使用公共属性而不是那些 getter/setter 我会被嘲笑,每个人都说“你不知道封装吗”,“你永远不应该有公共字段”
我的看法是它没有用,但每个人都这样做,因为它一直是这样做的,没有人问过它的问题。
我错了吗?
谢谢。
我错了吗?在你展示的例子中,我会说不,你没有错。这与对象与数据结构的区别有关,这似乎UserVo
是一种数据结构,因此使这些 getter 和 setter 完全无用。
对象将它们的数据隐藏在抽象之后,并公开对这些数据进行操作的函数(包括 getter 和 setter)。数据结构暴露了它们的数据并且没有有意义的功能。(清洁代码,罗伯特·马丁)
现在在 Java 中,一切都是实际的对象,并且该语言不支持数据结构。但这并不强迫我创建一个对象来充当数据结构。
我的意思是为什么我会更喜欢这个
public class Point {
private double x;
private double y;
public double getX(){
return x;
}
public double getY(){
return y;
}
public void setX(double x){
this.x = x;
}
public void setY(double y){
this.y = y;
}
}
在这个?
public class Point {
public double x;
public double y;
}
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/289998/359cddeb47c366197215/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!