
如圖..
uj5u.com熱心網友回復:
不能一概而論,看具體需求。而且就面向物件的封裝特性而言,不管構造方法有沒有引數,提供get/set也是有意義的,因為用方法可以更安全的保護屬性,比如判斷是否有效才允許設定屬性
uj5u.com熱心網友回復:
這個看情況,沒有強要求必須使用有參構造和get/set、一般開發中都是使用get/setuj5u.com熱心網友回復:
get set的話物件域是動態的,有點:靈活,缺點:某些場景會出現并發問題.純靠建構式賦值的話,生成的物件域是靜態的,不會出現并發問題,缺點:不靈活,可讀性低 如果引數多,建構式有多載的要求的話很繁瑣
所以怎么保證物件域賦值靈活,可讀性高又能保證域靜態呢,builder模式就能解決這種問題
@Getter
public class ResponseEntity<T> {
private String status;
private String msg;
private T data;
private ResponseEntity(Builder builder) {
this.status = builder.status;
this.msg = builder.msg;
this.data = builder.data;
}
public class Builder {
private String status;
private String msg;
private T data;
public Builder status(String status) {
this.status = status;
return this;
}
public Builder msg(String msg) {
this.msg = msg;
return this;
}
public Builder data(T data) {
this.data = data;
return this;
}
public Builder ok() {
this.status = HttpCode.OK.getCode();
return this;
}
public Builder fail() {
this.status = HttpCode.SERVER_EXCEPTION.getCode();
return this;
}
public ResponseEntity build() {
return new ResponseEntity(this);
}
}
}
uj5u.com熱心網友回復:
上面例子改一下@Getter
public class ResponseEntity<T> {
private String status;
private String msg;
private T data;
private ResponseEntity(Builder builder) {
this.status = builder.status;
this.msg = builder.msg;
this.data = (T)builder.data;
}
public static class Builder<T> {
private String status;
private String msg;
private T data;
public Builder status(String status) {
this.status = status;
return this;
}
public Builder msg(String msg) {
this.msg = msg;
return this;
}
public Builder data(T data) {
this.data = data;
return this;
}
public Builder ok() {
this.status = HttpCode.OK.getCode();
return this;
}
public Builder fail() {
this.status = HttpCode.SERVER_EXCEPTION.getCode();
return this;
}
public ResponseEntity build() {
return new ResponseEntity(this);
}
}
public static void main(String[] args) {
ResponseEntity msg = new ResponseEntity.Builder().status("1").msg("msg").build();
System.out.println(msg);
}
}
uj5u.com熱心網友回復:
但是如果變數很多,就要寫很多set和get,修改代碼螢屏拉來拉去,拉到眼花怎么破?
uj5u.com熱心網友回復:
物件屬性 不是在創建的時候,所有屬性就有值的。全部引數的建構式不實用uj5u.com熱心網友回復:
我覺得可以寫springbean
uj5u.com熱心網友回復:
一般的話使用getsetuj5u.com熱心網友回復:
如果是標準的bean get/set和無參構造都要有根據業務可以用有參構造和builder模式
uj5u.com熱心網友回復:
不能一概而論,看具體需求。
而且就面向物件的封裝特性而言,不管構造方法有沒有引數,提供get/set也是有意義的,因為用方法可以更安全的保護屬性,比如判斷是否有效才允許設定屬性
但是如果變數很多,就要寫很多set和get,修改代碼螢屏拉來拉去,拉到眼花怎么破?
uj5u.com熱心網友回復:
必須設定并且需要手動設定的都放一個構造里,引數過多通常在構造里加上自動初始化,剩下的setuj5u.com熱心網友回復:
全參的構造一般很少寫,基本都是get/set方式。而且現在前后端傳值都是直接通過同屬性名賦值的方式了,根本不需要你一個個去set。
uj5u.com熱心網友回復:
簡單物件調setter進行設定,復雜物件使用Buidler進行設定就好。一般很少使用帶引數的構造器。
uj5u.com熱心網友回復:
要看情況啊,有些類,剛構造出來時的屬性不確定,要等到后面才能得到資料進行set,這種就是哪些屬性不能確定就先不用構造方法構造,等到后面再setuj5u.com熱心網友回復:
5個以內可以考慮有參,其實這個不重要,build方法或許更好一點.轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55171.html
標籤:Java相關
上一篇:java界面設計添加事件
下一篇:寫一個超級簡單的代碼
