JavaScript 中如何使用状态模式简化对象

79 阅读1分钟

①:状态模式是一个有趣的模式,它可能是解决一些需求场景的最佳方式。虽然状态模式不是一种易于学习的模式(它通常会导致代码量增加),但一旦您了解了状态模式的本质,您将在未来感谢它无与伦比的好处;
②开闭状态:简单实现是定义一个状态 flag 用以改变状态;
③多态:最简单的方法是在上一个函数中扩充状态,但越来越多的 if、else 的判断,代码会变得越来越难以维护。换一个思路:之前我们只是把物体当成一个单独的对象,来切换它的内部属性以实现状态切换,但实际上,我们可以打破惯性思维,将每一个状态都视为一个独立的存在,封装成一个单独的类,而我们只需要关注它处于什么状态,不需要处理状态切换,状态切换由每个状态自己处理;
④状态模式:状态模式是一种行为软件设计模式,它允许对象在其内部状态发生变化时改变其行为。这种模式接近于有限状态机的概念。状态模式可以解释为策略模式,它能够通过调用模式接口中定义的方法来切换策略,简单来说,如果你的对象有多个状态,并且不同状态的对象表现不同,那么你可以考虑使用状态模式。状态模式有时会增加代码行数,但代码的质量并不取决于代码行数。使用状态模式通常可以使您的对象的逻辑更加简洁;
(参考:mp.weixin.qq.com/s/MiQt9iEHe…