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

    运行结果:

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

  • 相关阅读:
    java:输出流程printStream
    phalcon 连接多个数据库 phalcon multi-database
    Selenium Webdriver元素定位的八种常用方法
    adb push ,adb pull和adb install的区别
    Java将数据写进excel
    Java接口和抽象类的区别
    深入理解Java的接口和抽象类
    Java内存解析 程序的执行过程
    bit,byte,char,位,字节,字符 的区别
    java static成员变量方法和非static成员变量方法的区别 ( 二 )
  • 原文地址:https://www.cnblogs.com/wxisme/p/4544432.html
Copyright © 2011-2022 走看看