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

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

    结构: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());
    		
    	}
    
    }
    

    运行结果:

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

  • 相关阅读:
    编译安装LAMP之php-5.4.13、xcache-2.0及使用ab命令实现压力测试
    编译安装LAMP之MySQL-5.5.28(通用二进制格式)
    编译安装LAMP之httpd-2.4.4
    建立LAMP平台
    MySQL初步,数据类型及SQL语句
    数据库及MySQL
    PHP相关概念及配置
    CSS:页面美化和布局控制
    HTML标签:表单标签
    web概念简述,HTML学习笔记
  • 原文地址:https://www.cnblogs.com/wxisme/p/4544432.html
Copyright © 2011-2022 走看看