当前位置: 首页 > news >正文

网站开发工程师英文简历cpanel面板 WordPress

网站开发工程师英文简历,cpanel面板 WordPress,wordpress应用apok主题,网页制作软件工具22-Python与设计模式–状态模式 一、电梯控制器 电梯在我们周边随处可见,电梯的控制逻辑中心是由电梯控制器实现的。电梯的控制逻辑,即使简单点设计, 把状态分成开门状态,停止状态和运行状态,操作分成开门、关门、运…

22-Python与设计模式–状态模式

一、电梯控制器

电梯在我们周边随处可见,电梯的控制逻辑中心是由电梯控制器实现的。电梯的控制逻辑,即使简单点设计,
把状态分成开门状态,停止状态和运行状态,操作分成开门、关门、运行、停止,那流程也是很复杂的。
首先,开门状态不能开门、运行、停止;停止状态不能关门,停止;运行状态不能开门、关门、运行。
要用一个一个ifelse…实现,首先代码混乱,不易维护;二是不易扩展。至于各种设计原则什么的……
那该如何实现?在上边的逻辑中,每个操作仅仅是一个操作,状态切换与操作是分离的,这也造成后来操作和
状态“相互配合”的“手忙脚乱”。如果把状态抽象成一个类,每个状态为一个子类,每个状态实现什么操作,
不实现什么操作,仅仅在这个类中具体实现就可以了。
下面我们实现这个逻辑。

先实现抽象的状态类:

class LiftState:def open(self):passdef close(self):passdef run(self):passdef stop(self):pass

而后实现各个具体的状态类:

class OpenState(LiftState):def open(self):print "OPEN:The door is opened..."return selfdef close(self):print "OPEN:The door start to close..."print "OPEN:The door is closed"return StopState()def run(self):print "OPEN:Run Forbidden."return selfdef stop(self):print "OPEN:Stop Forbidden."return self
class RunState(LiftState):def open(self):print "RUN:Open Forbidden."return selfdef close(self):print "RUN:Close Forbidden."return selfdef run(self):print "RUN:The lift is running..."return selfdef stop(self):print "RUN:The lift start to stop..."print "RUN:The lift stopped..."return StopState()
class StopState(LiftState):def open(self):print "STOP:The door is opening..."print "STOP:The door is opened..."return OpenState()def close(self):print "STOP:Close Forbidden"return selfdef run(self):print "STOP:The lift start to run..."return RunState()def stop(self):print "STOP:The lift is stopped."return self

为在业务中调度状态转移,还需要将上下文进行记录,需要一个上下文的类。

class Context:lift_state=""def getState(self):return self.lift_statedef setState(self,lift_state):self.lift_state=lift_statedef open(self):self.setState(self.lift_state.open())def close(self):self.setState(self.lift_state.close())def run(self):self.setState(self.lift_state.run())def stop(self):self.setState(self.lift_state.stop())

这样,在进行电梯的调度时,只需要调度Context就可以了。业务逻辑中如下所示:

if __name__=="__main__":ctx = Context()ctx.setState(StopState())ctx.open()ctx.run()ctx.close()ctx.run()ctx.stop()

打印如下:

STOP:The door is opening… STOP:The door is opened… OPEN:Run
Forbidden. OPEN:The door start to close… OPEN:The dorr is closed
STOP:The lift start to run… RUN:The lift start to stop… RUN:The
lift stopped…

由逻辑中可知,电梯先在STOP状态,然后开门,开门时运行Run,被禁止,然后,关门、运行、停止。

二、状态模式

状态模式的定义如下:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。

三、状态模式的优点和应用场景

优点:
1、状态模式的优点是结构清晰,相比于ifelse…简约了不少;
2、封装性好,外部调用不必知道内部实现细节。应用场景:
1、行为状态改变的场景。这点在各种控制器中非常常见,同时,逻辑结构为状态转移图的场景中都非常适用

四、状态模式的缺点

1、在状态比较多时,子类也会非常多,不便于管理。
http://www.yayakq.cn/news/887113/

相关文章:

  • 前端可以做网站吗wordpress rss 爬取
  • 济南网站建设_美叶网络python 解析 wordpress
  • 网站怎样获得利润公司网站制作公司倒闭
  • 公司怎么找做网站wordpress接入微信订阅号
  • 广州网站运营专业乐云seowordpress themes free
  • 中英文网站建设企业中国空间站的意义
  • html社交网站模板南京手机网站制作公司
  • 网站备案过户 主体需要一致么全国统一核酸检测价格
  • 佛山正规的免费建站制定网络营销方案的步骤
  • 天门网站建设如何查询域名服务商
  • 建设企业网站需注意什么贺州网站建设
  • 网络推广话术技巧惠州网站seo
  • 手机软件开发网站务分销系统
  • 起点网站书的封面怎们做中国建设银行网站公积金查询
  • 吉林长春火车站官网网站开发流程说明
  • 网站内链案例wordpress 模块化主题
  • 专业的郑州网站推广什么叫网络营销
  • jsp网站开发登陆济宁网站运营
  • 大型网站的技术架构问题网页即时聊天
  • 网站的设计理念wordpress+整合js
  • 让网站做的有吸引力制作网站的分类
  • 品牌设计公司网站源码免费手游代理平台
  • 做网站销售工资创意网站 案例 下载
  • 怎么制作网站接口南浔哪有做网站的
  • 个人网站备案时间wordpress 分类页 获取别名
  • 网站服务空间如何建设一个公司网站
  • 黑糖不苦还做网站么电子商务网站有哪些?
  • 晋城网站制作公司做网站毕设任务书
  • 免费建站团队中铁建设集团招聘官网
  • 北京公司网站制作价格页游开服表