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();
        }
    }
    

    总结

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

  • 相关阅读:
    android 打包错误
    mysql innoDB 挂了的临时解决方案
    android notification 传值关键
    maven eclipse 插件下载地址
    微信html5开发选哪一个
    android AsyncTask 只能在线程池里单个运行的问题
    关于Fragment 不响应onActivityResult的情况分析 (
    Android-BaseLine基础性开发框架
    linux网络流量实时监控工具之iptraf
    android 圆角按钮和按钮颜色
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/10127112.html
Copyright © 2011-2022 走看看