statestructural.cs

来自「使用C#程序将23个常用设计模式进行列表显示」· CS 代码 · 共 80 行

CS
80
字号
using System;
using System.Windows.Forms;
using System.Text;

namespace DesignPattern.StateStructural
{
    class StateStructural : AbstractPattern
    {
        public static void Run(TextBox tbInfo)
        {
            s_tbInfo = tbInfo;
            s_tbInfo.Text = "";

            // Setup context in a state 
            Context c = new Context(new ConcreteStateA()); 
            
            // Issue requests, which toggles state 
            c.Request(); 
            c.Request(); 
            c.Request(); 
            c.Request(); 
            
            // Wait for user 
            //Console.Read();
        }
    }
    
    // "State" 
    abstract class State 
    {
        public abstract void Handle(Context context); 
    }
    
    // "ConcreteStateA" 
    class ConcreteStateA : State 
    {
        public override void Handle(Context context) 
        {
            context.State = new ConcreteStateB(); 
        }
    }
    
    // "ConcreteStateB" 
    class ConcreteStateB : State 
    {
        public override void Handle(Context context) 
        {
            context.State = new ConcreteStateA(); 
        }
    } 
    
    // "Context" 
    class Context 
    {
        private State state; 
        
        // Constructor 
        public Context(State state) 
        {
            this.State = state; 
        }
        
        // Property 
        public State State 
        { 
            get { return state; } 
            set 
            {
                state = value; 
                DesignPattern.FormMain.OutputInfo("State: " + state.GetType().Name);
            }
        }
        
        public void Request() 
        {
            state.Handle(this); 
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?