• [设计模式]State模式


    《Java与模式》

    又称状态对象模式。状态模式是对象的行为模式。GOF95

    一个对象的行为取决于一个或者多个动态变化的属性,这样的属性叫做状态。这样的对象叫做有状态的对象(stateful)。

    状态模式把一个所研究的对象的行为包装在不同的状态对象中,每一个状态对象都属于一个抽象状态的一个子类。

    状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。

    模式所涉及的对象包括:

      1. 抽象状态角色,state,定义一个接口,用以封装环境,context对象的一个特定的状态所对应的行为。

      2. 具体状态, concreteState角色,每一个具体状态类都实现了黄精的一个状态所对应的行为

      3. 环境角色,context,定义客户端所感兴趣的接口,并且保留一个具体状态类的实体。

    public class Context{
        private State state;
        public void sampleOperation(){
             state.sampleOperation();  
        } 
    
        public vlid setState(State state){
       this.state = state;
    }           
    }
    
    public interface State{
       void sampleOperation();
    }
    
    
    public class ConcreteState implements State{
       public void sampleOperation(){}
    }

    在什么情况下使用状态模式

    1. 一个对象的行为依赖于它所处的状态,对象的行为必须随着其状态的改变而改变。

    2. 对象的某个方法里依赖于一重或多重的条件转移语句,其中有大量的代码。状态模式把条件转移语句的每一个分支都包装到一个单独的类里。这使得这些条件转移分支能够以类的方式独立存在和演化。维护这些独立的类也就不再影响系统的其他部分。

  • 相关阅读:
    转:客制FORM调用会计科目弹性域/根据科目取得CODE_COMBINATION_ID
    设计模式——“signleton”
    javascript部分知识点
    Java多线程初学者指南(9):为什么要进行数据同步
    tomcat报错org.springframework.web.context.ContextLoaderListener找不到
    ibatis知识点
    毕业快一年
    (转)Spring AOP的底层实现技术
    JavaWeb项目中引入spring框架
    Spring的核心机制依赖注入
  • 原文地址:https://www.cnblogs.com/hongdanning/p/7569953.html
Copyright © 2020-2023  润新知