资讯专栏INFORMATION COLUMN

状态模式(State)

qc1iu / 1710人阅读

摘要:状态模式一状态模式定义允许一个对象在其内部状态改变时改变它的行为这个对象看起来像是改变了其类二具体实现创建抽象状态接口创建容器创建具体状态类调用输出三优缺点优点封装了转换规则扩展性强,易于添加新的状态对象或行为缺点状态过多导致类膨胀四源码

状态模式

一. 状态模式 1.1 定义

允许一个对象在其内部状态改变时改变它的行为.这个对象看起来像是改变了其类.

二. 具体实现 2.1 创建抽象状态接口
    public interface IState {
        void print(Context context);
    }
2.2 创建容器
    public class Context {
        private IState state;
        public Context(){
            this.state = null;
        }
        public void setState(IState state){
            this.state = state;
            System.out.println("setState : " + state.getClass().getSimpleName());
        }
        public void print(){
            state.print(this);
        }
    }
2.3 创建具体状态类
    public class StateA implements IState {
        @Override
        public void print(Context context) {
            System.out.println("StateA print ...");
            context.setState(new StateB());
        }
    }
    public class StateB implements IState {
        @Override
        public void print(Context context) {
            System.out.println("StateB print ...");
            context.setState(new StateA());
        }
    }
2.5 调用
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new StateA());
        context.print();
        context.print();
    }
2.6 输出
    setState : StateA
    StateA print ...
    setState : StateB
    StateB print ...
    setState : StateA
三. 优缺点 3.1 优点

封装了转换规则.

扩展性强,易于添加新的状态对象或行为.

3.2 缺点

状态过多导致类膨胀.

四. 源码
    https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69727.html

相关文章

  • FSM状态机之状态模式

    摘要:要注意这里的一个状态行为因为这个词是状态模式中最重要的个概念。考虑到这点,聪明的在中推出了状态机这个伪函数,能够帮助我们快速实现状态化。这里就引入了状态机这个概念,以及和他对应的状态表。  首先声明一点,这个模式是我目前见过最好用(本人观点),但是也是最难理解的一个(本人观点)。 所以大家需要做好心理准备,如果,对这个模式没有特别强烈的需求,比如: 我有一个Button,我按次数点击它...

    k00baa 评论0 收藏0
  • 设计模式(10)状态模式(讲解+应用)

    摘要:状态模式对于对象内部的状态,允许其在不同的状态下,拥有不同的行为,对状态单独封装成类。通过什么来举例子呢设计到多状态,不同状态下各自具有不同行为的东西,而且理解起来相对容易的。下篇更新适配器模式 目录 状态模式 为什么使用状态模式? 应用实例 状态模式 状态模式,顾名思义,肯定是和状态有关,进一步思考,我们在讨论的是设计模式,设计模式中的重要原则对变化的进行封装,顺着这个思路去想,...

    lakeside 评论0 收藏0
  • Java重构-策略模式状态模式、卫语句

    摘要:前言当代码中出现多重语句或者语句时。代替多重分支这个情况的代替方式是可以为晴天时处理逻辑下雨时处理逻辑阴天时处理逻辑策略模式使用策略模式可以代替多重和语句,让代码维护变得更加简单。状态模式允许一个对象在其内部状态改变的时候改变其行为。 前言 当代码中出现多重if-else语句或者switch语句时。弊端之一:如果这样的代码出现在多处,那么一旦出现需求变更,就需要把所有地方的if-els...

    Sourcelink 评论0 收藏0
  • 设计模式手册之状态模式

    摘要:什么是状态模式状态模式对象行为是基于状态来改变的。原文地址设计模式手册之状态模式优缺点优点封装了转化规则,对于大量分支语句,可以考虑使用状态类进一步封装。 1. 什么是状态模式? 状态模式:对象行为是基于状态来改变的。 内部的状态转化,导致了行为表现形式不同。所以,用户在外面看起来,好像是修改了行为。 Webpack4系列教程(17篇) + 设计模式手册(16篇):GitHub地址 博...

    call_me_R 评论0 收藏0
  • 设计模式手册之状态模式

    摘要:什么是状态模式状态模式对象行为是基于状态来改变的。原文地址设计模式手册之状态模式优缺点优点封装了转化规则,对于大量分支语句,可以考虑使用状态类进一步封装。 1. 什么是状态模式? 状态模式:对象行为是基于状态来改变的。 内部的状态转化,导致了行为表现形式不同。所以,用户在外面看起来,好像是修改了行为。 Webpack4系列教程(17篇) + 设计模式手册(16篇):GitHub地址 博...

    Faremax 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<