ジェネレータではなく静的パラメータ法を考慮する


静的パラメータメソッド


point.


静的パラメータ法とpublicジェネレータにはそれぞれの用途があるため,相対的な利点と欠点を理解し,使用する必要がある.ほとんどの場合、静的工場を使用するのが有利なので、公共生成者を盲目的に使用しないで習慣を変えなければならない.

長所

  • 名まで可能です.ネーミングが適切であれば、返すオブジェクトのプロパティを簡単に記述できます.
    同じ作成者が複数いる場合,開発者やユーザの立場からコードを見なければ明確な機能を知ることが難しく,混同しやすい.
    したがって、1つのクラスに同じ作成者が複数必要な場合は、作成者を使用して各相違をよりよく表示するのではなく、静的パラメータメソッドで置き換えることができます.
  • が呼び出されるたびにインスタンスを再作成する必要はありません.したがって、コストの高い同じオブジェクトの作成が頻繁に要求される場合、パフォーマンスが大幅に向上し、不要なインスタンスの作成が阻止されます.
  • 静的パラメータ法を使用して、サブタイプのインスタンスを返すこともできます.これにより、返すクラスを選択する柔軟性が得られます.
  • public class Figure {
    
        public static Figure getRectangle() {
            return new Rectangle();
        }
    
        public static Figure getCircle() {
            return new Circle();
        }
    
        static class Rectangle extends Figure {
    
        }
    
        static class Circle extends Figure {
    
        }
    }
            Figureクラスは、サブタイプのRectangleとCircleを返すことができます.
    入力
  • のパラメータに従って、サブタイプの異なるクラスを毎回返すことができる.これは3番の長所に関する内容です.たとえば、Enumの要素数が64個未満の場合、EnumSetはRegularEnumSetインスタンスを返し、65個より大きい場合はJumboEnumSetインスタンスを返します.
  • public class Figure {
    
        public static Figure makeFigure(boolean flag) {
            return flag ? new Rectangle() : new Circle();
        }
    
        static class Rectangle extends Figure {
    
        }
    
        static class Circle extends Figure {
    
        }
    }
            flagの値に基づいてインスタンスを動的に作成できます.
  • 静的メソッドを作成する場合、返すオブジェクトクラスは存在する必要はありません.これにより、サービスプロバイダフレームワーク(Service Provider Framework)を作成できます.クライアントは、必要なインプリメンテーションに条件を指定し、サービスプロバイダから必要なインスタンスを取得できます.
  • 短所

  • 共通ジェネレータがなく、静的ファクトリメソッドのクラスだけが継承できません.しかし、これは不要な継承を防止し、継承ではなく複合を使用するように誘導することができるため、利点とも言える.
  • プログラマーは
  • 静的工場方法を見つけるのが難しい.生成者のようにAPI説明に明示的に表示されないため,APIドキュメントでは静的ファクトリメソッドで良好な整理を行い,熟知した約定に従ってネーミングメソッドを命名する必要がある.