コンストラクタアレイ(JAVA)コンストラクタPatternを使用する理由
1.コンストラクタ・モード(Builder Pattern)を使用する理由
コンストラクタモードの利点必要なデータのみ設定 .柔軟性 毒性を高めることができる 不変性 1.必要なデータのみ設定
たとえば、Userオブジェクトの作成にageパラメータは必要ないとします.
コンストラクション関数または静的メソッドを使用する場合は、ageにスタック値を追加するか、ageのない新しいコンストラクション関数を作成する必要があります.
2.柔軟性を得る
たとえば、Userクラスに体重を表す新しい変数weightを追加する必要があります.ただし、ジェネレータでオブジェクトを作成するコードが既にあるとします.
3.可読性の向上
コンストラクタモードを使用すると、パラメータが多くなっても可読性が向上します.コンストラクション関数を使用してオブジェクトを作成すると、パラメータが多ければ多いほど、コードのリハーサルが悪くなります.
多くの開発者は、モディファイヤモードをよく使用します.しかし,Setterの実装は不要な拡張性を意味する.これはオープン‐クローズ法則に違反し,不要なコードリハーサルなどを招く.したがって、クラス変数をfinalとして宣言し、オブジェクトの作成をコンストラクタに渡すことが望ましい.
コンストラクタモードの利点
たとえば、Userオブジェクトの作成にageパラメータは必要ないとします.
コンストラクション関数または静的メソッドを使用する場合は、ageにスタック値を追加するか、ageのない新しいコンストラクション関数を作成する必要があります.
// 1. 더미 값
User user = new User("테스트", 0, 181, 121);
// 2. 생성자 또는 정적 메소드를 추가하는 방법
@NoArgsConstructor
@AllArgsConstrctor
public class User{
private String name;
private int age;
private int height;
private int iq;
public User(String name, int height, int iq){
this.name = name;
this.height = height;
this.iq = iq;
}
public User static of(String name, int height, int iq){
return new User(name, 0, 181, 121);
}
}
このような仕事は1、2回でいいが、繰り返すと時間の無駄になる.ただし、コンストラクタを使用すると動的に処理できます.User user = User.builder()
.name("테스트")
.heihgt(181)
.iq(121).build();
さらに、必要なデータのみを設定するコンストラクタの利点は、コンストラクタや静的方法に比べて、テストオブジェクトを生成する際に使用しやすく、不要なコード量を低減することである.2.柔軟性を得る
たとえば、Userクラスに体重を表す新しい変数weightを追加する必要があります.ただし、ジェネレータでオブジェクトを作成するコードが既にあるとします.
// ASIS
User user = new User("테스트", 19, 181, 121);
// TOBE
User user = new User("테스트", 19, 181, 121, 79);
これにより、新しく追加された変数のために既存のコードをすべて変更する必要がある場合に直面します.ただし、コンストラクタモードを使用すると、新しい変数の追加などに直面しても、既存のコードには影響しません.3.可読性の向上
コンストラクタモードを使用すると、パラメータが多くなっても可読性が向上します.コンストラクション関数を使用してオブジェクトを作成すると、パラメータが多ければ多いほど、コードのリハーサルが悪くなります.
User user = new User("테스트", 19, 181, 121);
19,181,121は何がすぐに把握しにくいかを意味し,パラメータの個数が多ければ多いほどコードが読みにくくなる.しかし、コンストラクタモードを適用すると、可読性が向上し、データを直感的に理解することができる.User user = User.builder()
.name("테스트")
.age(19)
.height(181)
.iq(121).build();
4.不変性の確保多くの開発者は、モディファイヤモードをよく使用します.しかし,Setterの実装は不要な拡張性を意味する.これはオープン‐クローズ法則に違反し,不要なコードリハーサルなどを招く.したがって、クラス変数をfinalとして宣言し、オブジェクトの作成をコンストラクタに渡すことが望ましい.
@RequiredArgsConstructor
@Builder
public class User{
private final String name;
private final int age;
private final int height;
private final int iq;
}
Reference
この問題について(コンストラクタアレイ(JAVA)コンストラクタPatternを使用する理由), 我々は、より多くの情報をここで見つけました https://velog.io/@bey1548/JAVA-빌더-패턴Builder-Pattern을-사용해야-하는-이유テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol