私は状態を変更する考えを理解し、私が理解していないが、それはこのパターンがStateソフトウェアデザインパターンの簡単な説明。
にオブジェクトが部分的にこれがどのように行われるかを正確に実行 でその種類を変更することができますことを言うとき、それはウィキペディアに何を意味するのかであります? wikiは概念について少し曖昧です。
私は状態を変更する考えを理解し、私が理解していないが、それはこのパターンがStateソフトウェアデザインパターンの簡単な説明。
にオブジェクトが部分的にこれがどのように行われるかを正確に実行 でその種類を変更することができますことを言うとき、それはウィキペディアに何を意味するのかであります? wikiは概念について少し曖昧です。
State Patternの基本的な考え方は、Contextクラスによっては、ある動作が別のオブジェクトで定義されていることです。
public class Context
{
....
public void Request()
{
_state.Handle(this);
}
}
Request
の挙動は_state
の現在の値に依存します。 State
は実行時に変更可能なもので、Context
のユーザーの場合、Context
の動作が変更されます。
現在のContext
はState
に、State
はContext
に変更されます。
/// <summary>
/// The 'State' abstract class
/// </summary>
abstract class State
{
public abstract void Handle(Context context);
}
/// <summary>
/// A 'ConcreteState' class
/// </summary>
class ConcreteStateA : State
{
public override void Handle(Context context)
{
context.State = new ConcreteStateB();
}
}
/// <summary>
/// A 'ConcreteState' class
/// </summary>
class ConcreteStateB : State
{
public override void Handle(Context context)
{
context.State = new ConcreteStateA();
}
}
この例は、最も一般的なデザインパターンの説明を含むdofactoryから取られています。
私は、この文が意味するものは、Cursorクラスの単一オブジェクト(ウィキペディアの例を借りる)をツールとして使用できるということです。
ただし、Cursorオブジェクトの内部状態は、PenToolまたはSelectionToolのいずれかであり、Cursorオブジェクトに影響を与えずに前後に切り替えることができます。つまり、Cursorオブジェクトは、ツールとして使用すると、Cursorオブジェクトを使用しているコードに影響を与えずに、PenToolからSelectionToolに、そしてそのタイプを「戻す」ことができます。
私はウィキペディアをスキップし、「Design Patterns」のコピーに直接進むことをお勧めします。あなたがそれを所有していない場合は、その時点で是正してください:) – tcarvin