「データホルダー」オブジェクトを作成するクラスがあり、このオブジェクトを次のような修飾子クラスで変更します。
public class Process {
public void Run() {
var dataHolder = new DataHolder();
var firstModification = new FirstModification(dataHolder);
firstModification.Run();
var secondModification = new SecondModification(dataHolder);
secondModification.Run();
//etc.
}
}
public class FirstModification {
DataHolder data_holder;
public FirstModification (DataHolder dh) {
data_holder = dh;
}
public void Run() {
// do something with data_holder
}
}
public class SecondModification {
// etc.
}
このコードでは、各変更コンストラクターはdataHolder
、パラメーターとして、対応するボイラープレートと共に、修飾子クラス内の重複したコードを受け取る必要があります。
したがって、可能であれば、および/または推奨される場合は、各修飾子オブジェクトがメソッドdataHolder
内の生きているオブジェクトの存在について「すでに知っている」ことを望みます (つまりProcess.Run()
、「親スコープ」)。パラメータを修飾子コンストラクタに渡します。
編集:こことここで説明されている内容に触発された、パイプライン(別名パイプとフィルター)デザインパターンを実装しようとしています。
助けてくれてありがとう!