美文网首页
状态模式

状态模式

作者: 会理发的店小二 | 来源:发表于2018-01-23 15:48 被阅读0次

一. 什么是状态模式?

举个生活中的例子,你的女(亚)朋(古)友(兽)有老(fen)虎(nu)形态,和兔(kai)子(xin)形态,在不同的形态,对你的表达的爱意的方式也不一样,老虎使用"疯狂抓咬"表达,而兔子形态会使用"萌萌一击"表达.

二. 状态模式的使用场景?

  • 行为随状态改变而改变的场景。
  • 条件、分支语句的代替者。

允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类.

三. 直观的状态模式

将开头的例子,用代码表示一下吧.

  • 创建状态接口

->State.java

public interface State {
    void love();
}
  • 创建实现接口的实体类

->TigerState.java

public class TigerState implements State {
    private String stateName="老虎形态";
    @Override
    public void love() {
        System.out.println("使出疯狂抓咬,让你遍体鳞伤.");
    }
    @Override
    public String toString() {
        return stateName;
    }
}

->Rabbit.java

public class RabbitState implements State {
    private String stateName="兔子形态";
    @Override
    public void love() {
        System.out.println("使出萌萌一击,让你得意洋洋.");
    }
    @Override
    public String toString() {
        return stateName;
    }
}
  • 创建状态转换器
    ->Transformer.java
public class Transformer {
    private String name;
    private State currentSate;

    /**
    * 切换状态
    * @return
    */
    public State transformTo(State state ){
        currentSate=state;
        System.out.println("切换到了"+state.toString());
        return currentSate;
    }

    public void love(){
        currentSate.love();
    }

    public Transformer(String name, State currentSate) {
        this.name = name;
        this.currentSate = currentSate;
        System.out.println("创建了"+currentSate.toString()+"的"+name);
    }
}
  • 创建测试类
public class Test {

    public static void main(String[] args) {
        State state=new RabbitState();
        Transformer gf=new Transformer("亚古兽",state);
        gf.love();
        //亚古兽超进化
        gf.transformTo(new TigerState());
        gf.love();
    }
}

相关文章

  • State模式

    状态模式(State模式) 定义 状态模式,又称状态对象模式(Pattern of Objects for S...

  • 设计模式-状态模式

    设计模式-状态模式 设计模式 状态模式的关键是区分事物内部的状态

  • 状态模式(状态机模式)

    状态模式学习笔记 前言:文章从三方面简单阐述状态模式:是什么、为什么、如何做。这是我在工作之余自己的一些理解、思考...

  • C++设计模式(3)

    本文预览: 状态模式 组合模式 迭代器 职责链 命令 状态模式 定义:状态模式(State Pattern),允许...

  • 设计模式——状态模式

    定义 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行...

  • 第5章 -行为型模式-状态模式

    一、状态模式的简介 二、状态模式的优缺点 三、状态模式的实例

  • 状态模式

    Android进阶之设计模式 状态模式 定义: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了...

  • 状态模式

    状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。允许对象随着状态改变而改变行为。 策略...

  • 状态模式

    《大话设计模式》阅读笔记和总结。原书是C#编写的,本人用Java实现了一遍,包括每种设计模式的UML图实现和示例代...

  • 状态模式

    状态模式 一个对象有状态变化 每次状态变化都会触发一个逻辑 不能总是用 if...else 来控制 示例 交通灯信...

网友评论

      本文标题:状态模式

      本文链接:https://www.haomeiwen.com/subject/wwvsaxtx.html