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

    1. 概念

         允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。 

    2. 案例

        

    package org.demo.state.demo01;
    class Context{
        private State state ;
        public Context(State state){
            this.state = state ;
        }
        public State getState() {
            return state;
        }
        public void setState(State state) {
            this.state = state;
            System.out.println(state.getClass().getName());
        }
        
        public void request(){
            state.handle(this) ;
        }
    }
    /**
     * 定义一个接口用来封装与Context的一个特定状态相关的行为  这里的 handle 方法
     */
    abstract class State {
        abstract void handle(Context context) ; 
    }
    
    class ConcreteStateA extends State{
    
        @Override
        void handle(Context context) {
            //if(Context.getI()>5){执行操作}else{设置下一个要执行的状态}
            System.out.println("执行a的处理");
             context.setState(new ConcreteStateB()) ; //设置下一个要执行的 状态 
        }
    }
    
    class ConcreteStateB extends State{
    
        @Override
        void handle(Context context) {
              System.out.println("执行b的处理");
              context.setState(new ConcreteStateA()) ; //设置下一个状态
        }
    }
    
    public class Demo01 {
        public static void main(String[] args) {
             Context c = new Context(new ConcreteStateA()) ;
             c.request() ;
             c.request() ;
             /*c.request() ;
             c.request() ;*/
             
        }
    }
  • 相关阅读:
    大道至简第一章和java理论学时第一节。感受。
    jQuery基础
    JavaScript对象及初始面向对象
    使用JavaScript操作DOM
    JavaScript操作BOM对象
    JavaScript基础
    实体之间的对应关系
    MySQL常用函数
    SQL Server中分离附加数据及生成SQL脚本
    C#中子类构造函数
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3804056.html
Copyright © 2011-2022 走看看