zoukankan      html  css  js  c++  java
  • 设计模式系列

    在状态模式中,类的行为时基于它的状态改变而改变。

    介绍

    状态模式属于行为型模式,通过运行对象在内部状态发生改变时改变它的行为,主要解决的问题是对象的行为严重依赖于它的状态。

    类图描述

    代码实现

    1、定义状态上下文

        public class Context
        {
            private static IState state;
    
            public void SetState(IState state) => Context.state = state;
    
            public IState GetState() => state;
        }
    

    2、定义行为接口

    public interface IState
    {
        void DoAction(Context context);
    }
    

    3、定义行为

    public class StartState : IState
    {
        public void DoAction(Context context)
        {
            Console.WriteLine("Player is in start state");
            context.SetState(this);
        }
    
        public override string ToString()
        {
            return "Start State";
        }
    }
    
    public class StopState : IState
    {
        public void DoAction(Context context)
        {
            Console.WriteLine("Player is in stop state");
            context.SetState(this);
        }
    
        public override string ToString()
        {
            return "Stop State";
        }
    }
    

    4、上层调用

    class Program
    {
        static void Main(string[] args)
        {
            Context context = new Context();
            IState startState = new StartState();
            startState.DoAction(context);
    
            Console.WriteLine(context.GetState().ToString());
    
            IState stopState = new StopState();
            stopState.DoAction(context);
            Console.WriteLine(context.GetState().ToString());
    
            Console.ReadKey();
        }
    }
    

    总结

    状态模式封装了转换规则,将每种状态与对应的的行为进行关联,这样可以使多个环境对象共享一个状态对象,从而减少系统中对象的个数。

  • 相关阅读:
    探测行星-搜寻外星行星
    NLM非局部均值算法相关
    LBP纹理特征
    IPOL图像处理分析经典在线(文献+源码)
    Halcon学习之四:有关图像生成的函数
    Halcon学习之三:有关图像通道的函数
    Halcon学习之二:摄像头获取图像和相关参数
    Halcon学习之边缘检测函数
    Halcon学习之一:查询图像参数
    Halcon学习之两幅图像处理
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/10127112.html
Copyright © 2011-2022 走看看