は、以下のクラスを仮定しますctorに作成されていないフィールドのパターンを削除しますか?
public class MyClass : IDisposable
{
protected MyDisposableType1 _object1;
protected MyDisposableType2 _object2;
public MyClass()
{
}
public StartActivity1()
{
_object1 = new MyDisposableType1();
}
public StopActivity1()
{
_object1.Dispose();
_object1 = null;
}
public StartActivity2()
{
_object2 = new MyDisposableType2();
}
public StopActivity2()
{
_object2.Dispose();
_object2 = null;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
...
}
}
}
Dispose patternによると、私のクラスは、使い捨てタイプのフィールドを所有しているので、私はIDisposeable
を実装する必要があります。しかし、すべてのDisposeパターンの例では、ctorで作成された使い捨てフィールドを扱っています。この場合、処分パターンは明らかです。しかし、ユーザーがMyClass
ライフサイクルの間に自分の使い捨てフィールドを複数回作成して破壊することができたらどうなりますか? Disposeパターンも使用する必要がありますか、またはいくつかのユースケースがありますか?
あなたがダウンボートを持っている理由はわかりませんが、私にとっては妥当な質問のようです。私はこの設計上の問題が、あなたのロジックを1つのクラスに正しくパッケージ化していないために浮上したのだろうかと思います。メソッドStartActivity1()とStartActivity2()はクラスインスタンスの状態を共有しますか? – camelCase
@camelCase申し訳ありませんが、あなたは "メソッドStartActivity1()とStartActivity2()はクラスインスタンスの状態を共有しますか?" – gustav
私は、アクティビティ1とアクティビティ2のロジックを、基本クラスの共有ロジック(ただしインスタンス状態ではない)を持つ別のクラスにデカップリングできますか?私はあなたのパターン設計のジレンマが最初にどのようにして起きたのか疑問に思っています。とにかくあなたの主な質問に良い答えがあります。 – camelCase