zoukankan      html  css  js  c++  java
  • java设计模式----状态模式

     状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。

    策略模式和状态模式有点相似,区别就是状态模式是行为改变状态,主要在于状态改变行为的应用场景,而策略模式则是采用哪种算法,让Context去实现哪种算法,决定权在于客户端。状态模式的行为是平行的,不可相互替换的;而策略模式的行为是平等性的,是可以相互替换的

    主要有三个角色:

    环境角色(Context):保留客户端所需要的一些接口,并保留一个具体状态类的实例。

    package design.state;
    
    public class Context {
    	private State state;
    
    	public void setState(State state) {
    		this.state = state;
    	}
    	//定义客户端调用接口
    	public void request(String para){
    		state.handle(para);
    	}
    }
    

      

    抽象状态角色(State):作为一个接口,封装环境对象的一个特定的状态所对应的行为。

    package design.state;
    
    public interface State {
    	public void handle(String para);
    
    }
    

      

    具体状态角色(ConcreteState):实现具体的接口定义行为。

    package design.state;
    
    public class ConcreteStateA implements State{
    
    	@Override
    	public void handle(String para) {
    		System.out.println("ConcreteStateA handle:"+para);
    	}
    
    }
    

      

    package design.state;
    
    public class ConcreteStateB implements State{
    
    	@Override
    	public void handle(String para) {
    		System.out.println("ConcreteStateB handle:"+para);
    	}
    
    }
    

    测试

    package design.state;
    
    public class Client {
    	public static void main(String[] args) {
    		//创建状态
    		State state=new ConcreteStateA();
    		State state1=new ConcreteStateB();
    		//创建环境
    		Context context=new Context();
    		 //设置状态
    		context.setState(state);
    		//请求
    		context.request("test");
    		//设置状态
    		context.setState(state1);
    		//请求
    		context.request("test");
    	}
    
    }
    

      

    结果

    ConcreteStateA handle:test
    ConcreteStateB handle:test
    

      

  • 相关阅读:
    vueJs+webpack单页面应用--vue-router配置
    webstorm IDE添加Plugins----添加vue插件
    WebStorm 11、PhpStorm 10免费激活(不需要注册码)
    webpack react基础配置二 热加载
    webpack react基础配置一
    移动端页面去掉click点击 背景色变化
    css美化checkbox radio样式
    ie11媒体查询以及其他hack
    angularJS ng-grid 配置
    网络7. TCP/IP网络之网络接口层
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5219589.html
Copyright © 2011-2022 走看看