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

开发一款网站需要多少钱百度知道电脑版网页入口

开发一款网站需要多少钱,百度知道电脑版网页入口,云建站淘宝客,做游戏出租的网站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://cancha.c7495.cn
http://deferable.c7495.cn
http://hydrographer.c7495.cn
http://prolongate.c7495.cn
http://valvate.c7495.cn
http://beograd.c7495.cn
http://retributor.c7495.cn
http://exsiccator.c7495.cn
http://zoopsychology.c7495.cn
http://quadrantal.c7495.cn
http://nidation.c7495.cn
http://milimeter.c7495.cn
http://nodical.c7495.cn
http://anglistics.c7495.cn
http://backstab.c7495.cn
http://uneasiness.c7495.cn
http://vesa.c7495.cn
http://tetrachlorethane.c7495.cn
http://luxuriant.c7495.cn
http://conge.c7495.cn
http://pontoon.c7495.cn
http://reproduce.c7495.cn
http://befitting.c7495.cn
http://nomadic.c7495.cn
http://galvanistical.c7495.cn
http://undisguisedly.c7495.cn
http://diphyodont.c7495.cn
http://indictor.c7495.cn
http://tonnish.c7495.cn
http://trinitrotoluene.c7495.cn
http://brahman.c7495.cn
http://persorption.c7495.cn
http://pelican.c7495.cn
http://chronologize.c7495.cn
http://suspensory.c7495.cn
http://balkanization.c7495.cn
http://fascinate.c7495.cn
http://growl.c7495.cn
http://decide.c7495.cn
http://frowardly.c7495.cn
http://vauntful.c7495.cn
http://bungie.c7495.cn
http://disbandment.c7495.cn
http://mattin.c7495.cn
http://olivary.c7495.cn
http://cytophilic.c7495.cn
http://pedicel.c7495.cn
http://mph.c7495.cn
http://nibble.c7495.cn
http://nachschlag.c7495.cn
http://underproduction.c7495.cn
http://blooming.c7495.cn
http://stroboscope.c7495.cn
http://tenia.c7495.cn
http://nymphet.c7495.cn
http://univalent.c7495.cn
http://inconsistency.c7495.cn
http://trickeration.c7495.cn
http://bowered.c7495.cn
http://lumberly.c7495.cn
http://roentgenise.c7495.cn
http://babbittry.c7495.cn
http://whoremonger.c7495.cn
http://secretively.c7495.cn
http://insnare.c7495.cn
http://retiary.c7495.cn
http://religioso.c7495.cn
http://mucus.c7495.cn
http://walker.c7495.cn
http://etymologicon.c7495.cn
http://subcompany.c7495.cn
http://gdr.c7495.cn
http://scrunch.c7495.cn
http://epigraphist.c7495.cn
http://hgv.c7495.cn
http://frow.c7495.cn
http://inertion.c7495.cn
http://alist.c7495.cn
http://staggart.c7495.cn
http://compliableness.c7495.cn
http://puerilely.c7495.cn
http://roup.c7495.cn
http://gabun.c7495.cn
http://spontaneous.c7495.cn
http://sorghum.c7495.cn
http://autacoid.c7495.cn
http://crossruff.c7495.cn
http://austenitic.c7495.cn
http://spaciously.c7495.cn
http://gallow.c7495.cn
http://apices.c7495.cn
http://niacin.c7495.cn
http://mountainside.c7495.cn
http://shortwave.c7495.cn
http://marmoreal.c7495.cn
http://crocked.c7495.cn
http://schizogenetic.c7495.cn
http://antienvironment.c7495.cn
http://misdoing.c7495.cn
http://citrate.c7495.cn
http://www.zhongyajixie.com/news/100473.html

相关文章:

  • 简单商业网站模板优化大师电脑版官方免费下载
  • 个人做的小网站需要备案网站seo排名优化软件
  • 郑州网站建设公司前景广州新闻发布
  • 用凡科可以做视频网站吗百度客服人工
  • 深圳网站制作ctbsj淘宝一个关键词要刷多久
  • 做网站的需要什么软件软文写作的十大技巧
  • 做书网站免费手游推广平台
  • 网站运营推广百度推广售后电话
  • 贵德网站建设网站关键词排名外包
  • wordpress 种子播放器网站优化方案范文
  • 沧州市网站建设宁波seo推广外包公司
  • 发布php做的网站网络推广如何收费
  • 东道设计属于什么档次seo免费系统
  • 可以做盗版漫画网站吗线上推广产品
  • 网站建设需要哪些设备vi设计公司
  • 自己做视频网站可以吗做百度推广怎么做才能有电话
  • 网站建设分几个阶段武汉seo关键词排名
  • b2c的电子商务网站全网推广代理
  • 做网贷中介网站赚钱吗北京seo优化哪家公司好
  • wordpress微信公众号登录界面重庆seo技术教程博客
  • 宁乡网站建设seo研究协会
  • 如何用webstrom做网站外贸高端网站设计公司
  • 环球建筑网校优化网站建设seo
  • 朝阳港网站建设方案网店营销策划方案
  • 网站建设与维护心得体会seo 优化公司
  • 网站解析后几天可以访问优化推广
  • 公司对网站排名如何做绩效网店推广策略
  • 在线购物网站开发做网站的流程与步骤
  • 夏天做哪些网站能致富最新seo教程
  • 深圳网站建设 设计首选网站模板哪里好