• 设计模式——状态模式


    状态模式:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。

    结构:Context环境类 :环境类中维护一个State对象,它定义了当前的状态 。

             State:状态接口

             ConcreteState: 具体的状态类,封装了每一个具体类的对应行为。

    应用场景:

             线程对象各个状态的切换

             店房间状态的管理

             账号的状态管理

    看一个简单的Demo:

     

    public interface State {
    	void handle();
    }
    
    class Booked implements State {
    	@Override
    	public void handle() {
    		System.out.println("您已下单!");
    	}
    }
    
    class Payed implements State {
    	@Override
    	public void handle() {
    		System.out.println("您已付款!");
    	}
    }
    
    class Sended implements State {
    	@Override
    	public void handle() {
    		System.out.println("已发货!");
    	}
    }
    class InWay implements State {
    	@Override
    	public void handle() {
    		System.out.println("送货中。。。");
    	}
    }
    
    class Recieved implements State {
    	@Override
    	public void handle() {
    		System.out.println("已确认收货!");
    	}
    }
    
    public class Context {
    	
    	private State state;
    	
    	public Context() {}
    	public Context(State state) {
    		this.state = state;
    	}
    	
    	public void setState(State state) {
    		System.out.println("订单信息已更新!");
    		this.state = state;
    		this.state.handle();
    	}
    
    }
    
    public class Client {
    	public static void main(String[] args) {
    		Context context = new Context();
    		
    		context.setState(new Booked());
    		context.setState(new Payed());
    		context.setState(new Sended());
    		context.setState(new InWay());
    		context.setState(new Recieved());
    		
    	}
    
    }
    

    运行结果:

    订单信息已更新!
    您已下单!
    订单信息已更新!
    您已付款!
    订单信息已更新!
    已发货!
    订单信息已更新!
    送货中。。。
    订单信息已更新!
    已确认收货!

  • 相关阅读:
    前台查询条件参数多时封装成一个bean
    struts2操作json成字符串格式错误被转义及其前台访问json对象的方法
    hibernate第一课第一个自己的helloworld
    easyui中的tree数据使用说明
    css设计课堂笔记,有关样式的
    前台取json对象中的数据
    myeclipse自动生成代码SSH2
    jquery获取子对象操作
    iframe自适应高度调整
    组织配置java项目的外部lib包
  • 原文地址:https://www.cnblogs.com/wxisme/p/4544432.html
Copyright © 2020-2023  润新知