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

    运行结果:

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

  • 相关阅读:
    使用Myeclipse + SVN + TaoCode 免费实现项目版本控制的详细教程
    国内的代码托管服务
    国内可用的SVN和Git代码托管网站汇总
    需求调研与分析流程
    如何做好新项目的需求调研?(一)
    如何进行有效的需求调研
    weblogic和tomcat
    同步变量也是变量
    并发编程的三个管理
    机器学习
  • 原文地址:https://www.cnblogs.com/wxisme/p/4544432.html
Copyright © 2011-2022 走看看