20.状态模式
核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。
class Program
{
static void Main(string[] args)
{
State s = new State();
s.Say();
s.Say();
s.Say();
Console.Read();
}
}
public interface People
{
void Say(State s);
}
public class Chinese : People
{
public void Say(State s)
{
Console.Write("现在是中文...");
s.people = new English();
Console.WriteLine("现在切换到了英文");
}
}
public class English : People
{
public void Say(State s)
{
Console.Write("现在是英文...");
s.people = new Chinese();
Console.WriteLine("现在切换到了中文");
}
}
public class State
{
public People people { get; set; }
public State()
{
people = new Chinese();
Console.WriteLine("现在默认状态是中文");
}
public void Say()
{
people.Say(this);
}
}