2017-03-10 16 views
0

私は絶えずこの問題に直面しています。私のアプローチが正しいのかどうかはわかりません。私が働いているプロジェクトのコードベースは古いものではなく、数十の他のクラスが現在のコンストラクタを使用するため、ビルダーパターンまたは静的ファクトリで現在のコンストラクタを変更することはできません。既存のクラスにコンストラクタを最小効果で追加する

現在のコンストラクタです。

// Constructor used until now 
    public MatchingPortfolioUtil(Integer parameterA, Integer parameterB, 
    Integer parameterC) 
    { 
    this.parameterA = parameterA; 
    this.parameterB = parameterB; 
    this.parameterC = parameterC; 
    } 

と次のコンストラクタを追加します。今まで

// The new constructor 
    public MatchingPortfolioUtil(Integer parameterA) 
    { 
    this.parameterA = parameterA; 
    } 

、すべてが正常なようだが、私は(良いデザインで可能な場合)したいことは、それはいくつかの原因になりますので、私は私の新しいモジュール用に作成されたコンストラクタが、唯一の私の新しいモジュールを使用すべきであるということです他のモジュールが他のモジュールでこのコンストラクターを安全に使用していると考えて例外を使用する場合は例外です。

+2

既存のクラスのサブクラスを作成し、そこにコンストラクタを追加します。 – Jens

+0

@Jens現在のクラスのサブクラスを作成する場合は、このコンストラクタをsuperで再度使用する必要があります。私はもしあればよりクリーンなソリューションを楽しみにしています。 –

+0

コンストラクタ(which)をもう一度使う必要があるのはなぜですか? – Jens

答えて

1

クラスは密接に結合されており、1000行以上のコードです。クラスのメソッドが1つだけ必要です。この特別なメソッドでは、他のパラメータは必要ありません。

この音は、クラスのように多くの責任があります。

私はあなたが分離でそれを使用できるように別の(新しい)クラスに必要なメソッドを移動することをお勧めしたいと思います。

関連する問題