我目前正在开发一个简单的Java游戏,有几种不同的模式.我扩展了一个主要的Game类,将主要逻辑放在其他类中.尽管如此,主要的游戏类仍然非常沉重.
在快速浏览一下我的代码后,其中大部分是Getters and Setters(60%),而其余部分则是游戏逻辑真正需要的.
一些谷歌搜索声称Getters和Setters是邪恶的,而其他人声称他们是良好的OO练习和伟大的程序所必需的.
所以我该怎么做?应该是哪个?我应该为我的私人变量更改我的Getters和Setter,还是应该坚持使用它们?
我现在已经实现了一些Java应用程序,到目前为止只有桌面应用程序.我更喜欢使用不可变对象在应用程序中传递数据,而不是使用带有mutator(setter 和getter)的对象,也称为JavaBeans.
但是在Java世界中,使用JavaBeans似乎更常见,我无法理解为什么我应该使用它们.就个人而言,如果代码只处理不可变对象而不是一直改变状态,那么代码看起来会更好.
第15项中还建议使用不可变对象:最小化可变性,有效Java 2ed.
如果我有一个Person实现为JavaBean的对象,它看起来像:
public class Person {
private String name;
private Place birthPlace;
public Person() {}
public setName(String name) {
this.name = name;
}
public setBirthPlace(Place birthPlace) {
this.birthPlace = birthPlace;
}
public String getName() {
return name;
}
public Place getBirthPlace() {
return birthPlace;
}
}
Run Code Online (Sandbox Code Playgroud)
并且Person实现为不可变对象:
public class Person {
private final String name;
private final Place birthPlace;
public Person(String name, …Run Code Online (Sandbox Code Playgroud) 最近,我偶然发现了我的新团队大量使用JsonObject进行剩余数据交换的情况。他们的观点是在使用pojo时,我们与其余服务紧密绑定,而jsonObject提供了自由。同样,它避免了不必要的数据序列化,同时大大减少了类数。
我有几点要面对他们:
@JsonIgnore我不知道反序列化的确切成本,但是我不知何故应该没有太大的区别。
有人可以帮助我了解应采取的观点吗?
请提供使用POJO和JSONObject的利弊。
谢谢
请考虑以下Java代码:
public class SomeClass{
private int data;
public void setData(int data){
this.data = data;
}
public int getData(){
return this.data;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,可以从任何地方访问数据的值.那么为什么不公开现场数据呢?