プロジェクト1の作成者ではなく、静的パラメータメソッドを考慮してください.
クライアントがクラスインスタンスを取得する従来の手段は、共通ジェネレータです.クラスは、静的ファクトリメソッド(static factory method)を単独で提供することができる.
名前を付けてもいいです.
パラメータを作成者と作成者に渡すだけでは、返されるオブジェクトの特性を正しく記述することはできません.
静的ファクトリでは、名前を付けるだけで返されるオブジェクトの特性を簡単に記述できます.
呼び出しのたびにインスタンスを再作成する必要はありません.
制御 インスタンスは、クラスを単一インスタンスとしてもよいし、クラスをインスタンス化しなくてもよい. 不変値クラスでは、1つの等値インスタンスのみが保証されます. インスタンス制御は軽量レベルモードの基礎であり、列挙タイプは1つのインスタンスのみを作成することを保証する.
タイプのサブタイプオブジェクトを返す機能があります.
Java 8までは、インタフェースで静的メソッドを宣言できません.したがって、静的メソッドで「Type」という名前のインタフェースを返す必要がある場合は、通常、インスタンス化できない「Type」というクラスが作成され、定義されます.
Java 8からインタフェースが静的メソッドを持たないという制限が解除されたため,インスタンス化不可能なパートナークラスを設定する理由はない.つまり,ほとんどのクラスの共通静的メンバをインタフェース自体に置けばよい.
入力パラメータに従って、毎回異なるカテゴリのオブジェクトを返すことができます. 戻りタイプのサブタイプであれば、任意のクラスのオブジェクトを返すことができます.
EnumSetクラスには共通構造関数はなく、静的データエンベロープのみが提供され、要素の数に応じて2つのサブクラスの1つのインスタンスが返されます.
要素が64個未満の場合、要素をlong変数として管理するRegularEnumSetインスタンスを返し、65個を超える場合、long配列によって管理されるJumboEnumSetインスタンスを返します.
クライアントは、ファクトリが提供するオブジェクトがどのクラスのインスタンスなのか分からないし、知る必要もありません.(EnumSetのサブクラスのみです.)静的メソッドを作成する場合、返すオブジェクトクラスは存在する必要はありません.
継承には共通または保護された作成者が必要なため、静的メソッドのみではサブクラスを作成できません.
前述したコレクションフレームワークでは、これらのユーティリティ実装クラスを継承できません.
静的メソッドプログラマーは見つけにくい.
public static Boolean valuOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
이 메서드는 기본 타입인 boolean 값을 받아 Boolean 객체 참조로 변환해준다.
5つのメリット
名前を付けてもいいです.
パラメータを作成者と作成者に渡すだけでは、返されるオブジェクトの特性を正しく記述することはできません.
静的ファクトリでは、名前を付けるだけで返されるオブジェクトの特性を簡単に記述できます.
呼び出しのたびにインスタンスを再作成する必要はありません.
制御
タイプのサブタイプオブジェクトを返す機能があります.
Java 8までは、インタフェースで静的メソッドを宣言できません.したがって、静的メソッドで「Type」という名前のインタフェースを返す必要がある場合は、通常、インスタンス化できない「Type」というクラスが作成され、定義されます.
Java 8からインタフェースが静的メソッドを持たないという制限が解除されたため,インスタンス化不可能なパートナークラスを設定する理由はない.つまり,ほとんどのクラスの共通静的メンバをインタフェース自体に置けばよい.
EnumSetクラスには共通構造関数はなく、静的データエンベロープのみが提供され、要素の数に応じて2つのサブクラスの1つのインスタンスが返されます.
要素が64個未満の場合、要素をlong変数として管理するRegularEnumSetインスタンスを返し、65個を超える場合、long配列によって管理されるJumboEnumSetインスタンスを返します.
クライアントは、ファクトリが提供するオブジェクトがどのクラスのインスタンスなのか分からないし、知る必要もありません.(EnumSetのサブクラスのみです.)
2つの欠点
継承には共通または保護された作成者が必要なため、静的メソッドのみではサブクラスを作成できません.
前述したコレクションフレームワークでは、これらのユーティリティ実装クラスを継承できません.
静的メソッドプログラマーは見つけにくい.
💡핵심정리
정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적인 장단점을 이해하고
사용하는 것이 좋다. 그렇다고 하더라도 정적 팩터리를 사용하는 게 유리한 경우가 더 많으므로
무작정 public 생성자를 제공하던 습관이 있다면 고치자
📖스터디 회고
그동안 개발을 하면서 자주 사용하던 클래스 들이
정적 팩터리 메서드를 사용하여 만들었다는 것을 새로 알았다.
오픈소스나 자바의 클래스를 확인하며 공부를 하였는데,
앞으로도 내가 사용하는 클래스들이 어떻게 구성되어 있는지 알아보며 공부를 해야겠다.
Reference
この問題について(プロジェクト1の作成者ではなく、静的パラメータメソッドを考慮してください.), 我々は、より多くの情報をここで見つけました https://velog.io/@dlavntjs/아이템1-생성자-대신-정적-팩터리-메서드를-고려하라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol