これは実際には非常に基本的なものです。多分誰かが良い:)解決策を持ってくるでしょう。
IComponent などのインターフェイスを用意します。
public interface IComponent {
string GetStatus();
}
のいくつかの実装では、現在の時刻が午前 12 時から午前 12 時 10 分の間にある場合、IComponent
のロジックの一部をスキップする必要があります。しかし、時間間隔をまったく気にしないGetStatus()
他の実装があります。IComponent
つまり、次のように言えます。
public interface MyComponent : IComponent {
public string GetStatus() {
StringBuilder result = ...;
....
if (/*current time between 12:00AM and 12:10AM */)
result.Append("good enough");
else {
//calculate result
result.Append(/*calculated result*/);
}
...
return result.ToString();
}
}
したがって、基本的に必要なのはカプセル化です
if (/*current time between 12:00AM and 12:10AM */)
return "good enough";
いくつかのクラスに、それをまたはsmthと呼びましょう。必要な'SomeBehavior'
実装全体で再利用できます。 IComponent
それが役立つ場合、この条件の意味if
は「stat ファイルのチェックをスキップする」ことなので、SkipStatFilesCheckBehavior などの名前を付けることができます。
名前についてもよくわかりませんが、それが私がここにいる理由です (「動作」よりも適切な名前を付けることができます)。それを実装する最良の方法は何ですか?どのように「動作」をより適切に実装に注入できますIComponent
か (たとえば、コンストラクターなどを介して)? 将来、他の「動作」が必要になった場合、ソリューションは拡張可能ですか? 将来的には、ある種の「振る舞い」でIComponent
-implementation への参照が必要になるかもしれません。