zoukankan      html  css  js  c++  java
  • 状态模式(State)

    状态模式(State)

    核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:

     

    State类是个状态类,Context类可以实现切换,我们来看看代码:

     

    [java] view plaincopy
    package com.xtfggef.dp.state;

    /**
    * 状态类的核心类
    * 2012-12-1
    * @author erqing
    *
    */
    public class State {

    private String value;

    public String getValue() {
    return value;
    }

    public void setValue(String value) {
    this.value = value;
    }

    public void method1(){
    System.out.println("execute the first opt!");
    }

    public void method2(){
    System.out.println("execute the second opt!");
    }
    }
    [java] view plaincopy
    package com.xtfggef.dp.state;

    /**
    * 状态模式的切换类 2012-12-1
    * @author erqing
    *
    */
    public class Context {

    private State state;

    public Context(State state) {
    this.state = state;
    }

    public State getState() {
    return state;
    }

    public void setState(State state) {
    this.state = state;
    }

    public void method() {
    if (state.getValue().equals("state1")) {
    state.method1();
    } else if (state.getValue().equals("state2")) {
    state.method2();
    }
    }
    }
    测试类:

     

    [java] view plaincopy
    public class Test {

    public static void main(String[] args) {

    State state = new State();
    Context context = new Context(state);

    //设置第一种状态
    state.setValue("state1");
    context.method();

    //设置第二种状态
    state.setValue("state2");
    context.method();
    }
    }
    输出:

    execute the first opt!
    execute the second opt!

    根据这个特性,状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。

  • 相关阅读:
    网站测试中如何做好安全性测试
    Web安全性测试总结
    文件上传验证绕过技术总结
    Burp Suite使用介绍
    Burpsuite教程与技巧之HTTP brute暴力破解
    burpsuite绕过本地javascripte上传文件
    文件上传漏洞演示脚本之js验证
    上传验证绕过
    Burp Suite详细使用教程
    关于post和get传递参数的区别
  • 原文地址:https://www.cnblogs.com/juniorjava/p/7874557.html
Copyright © 2011-2022 走看看