设计模式之状态模式

r囧r小猫 2022-07-26 05:20 265阅读 0赞

定义:又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
状态模式的结构: 用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。
状态模式所涉及到的角色有:
环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。
抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。
 具体状态(ConcreteState)角色:每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。
 代码实例如下:  

  1. public class Context {
  2. //持有一个State类型的对象实例
  3. private State state;
  4. public void setState(State state) {
  5. this.state = state;
  6. }
  7. /** * 用户感兴趣的接口方法 */
  8. public void request(String sampleParameter) {
  9. //转调state来处理
  10. state.handle(sampleParameter);
  11. }
  12. }
  13.  public interface State {
  14. /** * 状态对应的处理 */
  15. public void handle(String sampleParameter);
  16. }
  17. public class ConcreteStateA implements State {
  18. public void handle(String sampleParameter) {
  19. System.out.println("ConcreteStateA handle :" + sampleParameter);
  20. }
  21. }
  22. public class ConcreteStateB implements State {
  23. public void handle(String sampleParameter) {
  24. System.out.println("ConcreteStateB handle :" + sampleParameter);
  25. }
  26. }
  27. public class Client {
  28. public static void main(String[] args){
  29. //创建状态
  30. State state = new ConcreteStateB();
  31. //创建环境
  32. Context context = new Context();
  33. //将状态设置到环境中
  34. context.setState(state);
  35. //请求
  36. context.request("test");
  37. State stateB = new ConcreteStateA();
  38. Context contextB = new Context();
  39. contextB.setState(stateB);
  40. contextB.request("11111");
  41. }
  42. }

上面的代码实例并不难理解,假如你学习过其他的设计模式的话,这个模式的思想也很好理解。根据思想就是把对象的状态设计成一个类实现。
基本设计是要设计一个抽象状态的接口,然后定义子类实现这个抽象状态的接口。然后再定义一个上下文的环境类,这个类持有抽象状态接口的对象,然后通过对象调用方法。充分贯彻了设计模式的基本思想:多组合,少继承。这个设计思想在不同的设计模式中应用非常多,我们一定要灵活运用。

发表评论

表情:
评论列表 (有 0 条评论,265人围观)

还没有评论,来说两句吧...

相关阅读

    相关 设计模式状态模式

    什么是设计模式 设计模式是经常使用、大多数人知道,有特定目录的代码设计经验。设计模式可以提高代码可维护性,可提升代码运行效率,也能提高系统可靠性。设计模式可以分为三类,分别

    相关 设计模式状态模式

    一.什么是状态模式? 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了这个类. 二.什么时候使用状态模式? 状态模式主要解决的是当控制

    相关 设计模式状态模式

    在软件开发过程中,应用程序中的部分对象可能会根据不同的情况作出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。 状态模式:对有

    相关 设计模式状态模式

    状态模式定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。 优点: 1、结构清晰,避免使用过多的switch……case或者if……else语句,避

    相关 设计模式状态模式

    定义:又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看

    相关 设计模式状态模式

    . 模式定义 ​ 在很多情况下,一个对象的行为取决于它的一个或多个变化的属性,这些属性我们称之为状态,这个对象称之为状态对象。对于状态对象而已,它的行为依赖于它的状态,