设计模式 - 行为型设计模式 - 状态模式(Java)
分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程大家好欢迎来到我的网站 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑人工智能时代就要来临了科… 继续阅读 前言https://www.captainai.net/troubleshooter我们说一个简单的例子。商品库存中心有个最基本的需求是减库存和补库存我们看看怎么用状态模式来写。核心在于我们的关注点不再是 Context 是该进行哪种操作而是关注这个 Context 会有哪些操作。定义状态接口public interface State { public void doAction(Context context); }定义减库存的状态public class DeductState implements State { public void doAction(Context context) { System.out.println(商品卖出准备减库存); context.setState(this); // 执行减库存的具体操作... } public String toString() { return Deduct State; } }定义补库存状态public class RevertState implements State { public void doAction(Context context) { System.out.println(给此商品补库存); context.setState(this); // 执行补库存的具体操作... } public String toString() { return Revert State; } }前面用到了 context.setState(this)我们来看看怎么定义 Context 类public class Context { private State state; private String name; public Context(String name) { this.name name; } public void setState(State state) { this.state state; } public void getState() { return this.state; } }我们来看下客户端调用大家就一清二楚了public static void main(String[] args) { // 我们需要操作的是 iPhone X Context context new Context(iPhone X); // 看看怎么进行补库存操作 State revertState new RevertState(); revertState.doAction(context); // 同样的减库存操作也非常简单 State deductState new DeductState(); deductState.doAction(context); // 如果需要我们可以获取当前的状态 context.getState().toString(); }读者可能会发现在上面这个例子中如果我们不关心当前 context 处于什么状态那么 Context 就可以不用维护 state 属性了那样代码会简单很多。不过商品库存这个例子毕竟只是个例我们还是有很多实例是需要知道当前 context 处于什么状态的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2573300.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!