zoukankan      html  css  js  c++  java
  • 我也设计模式——17.State

    状态模式是把各种状态封装成不同的类。



    关于Context类的实现,不太同于Strategy,虽然原理是一样的:
        public class Context
        
    {
            
    private State stateA, stateB, state;

            
    public Context()
            
    {
                stateA 
    = new StateA();
                stateB 
    = new StateB();
            }


            
    public void Request(int temp)
            
    {
                
    if (temp > 0)
                    state 
    = stateA;
                
    else
                    state 
    = stateB;

                state.Handle();
            }

        }
    可以看到,Request()方法是基于简单工厂的。
    还有,Context的ctor是基于单件模式的,可以使用注册工厂来简化。

    在Client端的调动方式,就这么简单:
                Context context = new Context();
                context.Request(
    20);


    基于委托的状态模式
    委托部分:

        public delegate void state();

        
    public class ContextUseingDelegate
        
    {
            
    public state myState;

            
    public void ContextInterface()
            
    {
                myState();
            }

        }

    我们需要在Context类中使用委托,而在Client端不变:

        public class Context
        
    {
            
    public void Request(int temp)
            
    {
                ContextUseingDelegate cud 
    = new ContextUseingDelegate();

                
    if (temp > 0)
                
    {
                    StateA sa 
    = new StateA();
                    cud.myState 
    += new state(sa.ConcreteStateA);
                }

                
    else
                    cud.myState 
    += new state(StateB.ConcreteStateB);

                cud.ContextInterface();
            }

        }
  • 相关阅读:
    共享纸巾更换主板代码分析 共享纸巾主板更换后的对接代码
    Python Django Ajax 传递列表数据
    Python Django migrate 报错解决办法
    Python 创建字典的多种方式
    Python 两个list合并成一个字典
    Python 正则 re.sub替换
    python Django Ajax基础
    Python Django 获取表单数据的三种方式
    python Django html 模板循环条件
    Python Django ORM 字段类型、参数、外键操作
  • 原文地址:https://www.cnblogs.com/Jax/p/913948.html
Copyright © 2011-2022 走看看