某一对象由于有不同的状态,而产生不同的行为。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { public interface IDoorState { void Switch(Door door); } public class DoorOn : IDoorState { public void Switch(Door door) { Console.WriteLine("door off"); door.DoorState = new DoorOff(); } } public class DoorOff : IDoorState { public void Switch(Door door) { Console.WriteLine("door on"); door.DoorState = new DoorOn(); } } public class Door { public IDoorState DoorState { get; set; } public Door() { DoorState = new DoorOff(); } public void Switch() { DoorState.Switch(this); } } static void Main(string[] args) { Door door = new Door(); door.Switch(); door.Switch(); door.Switch(); } } }