状态模式

xiaoxiao2021-02-28  27

1.使用场景:

常见的应用场景有线程对象各个状态之间的切换或者各种账号状态的管理等

2.UML表示

状态模式中主要有以下的几大角色: 2.1Context:环境类 环境类中维护一个State对象,定义了当前的对象 2.2State:抽象状态类 2.3ConcreteState:具体状态类 每一类封装了一个对应的行为 具体的UML示意图如下:

 

3.代码实现

 

下面我们通过一个图书馆借书的例子来对这个设计模式进行讲解:

public interface State { void handle(); } public class BorrowState implements State{ @Override public void handle() { System.out.println("书籍已经被借走"); } } public class FreeState implements State { @Override public void handle() { System.out.println("书本在馆!"); } } public class OrderedState implements State { @Override public void handle() { System.out.println("书本已经被预订!"); } } public class BookContext { private State state; public State getState() { return state; } public void setState(State state) { System.out.println("修改状态" ); this.state = state; state.handle(); } }

最后是一个简单的测试类:

 

public class Client { public static void main(String[] args) { BookContext ctx=new BookContext(); ctx.setState(new FreeState()); ctx.setState(new OrderedState()); } }

项目链接:https://github.com/memoryexplosion/design_pattern_review/tree/master/src/java/state  

 

 

转载请注明原文地址: https://www.6miu.com/read-2623222.html

最新回复(0)