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

网站空间有哪几种类型百度一下网页版搜索引擎

网站空间有哪几种类型,百度一下网页版搜索引擎,建设博客网站步骤,歌曲伴奏在线制作网站深入浅出设计模式--状态模式 一、背景二、问题三、解决方案四、 适用场景总结五、后记 一、背景 状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。其与有限状态机的概念紧密相关&#x…

深入浅出设计模式--状态模式

  • 一、背景
  • 二、问题
  • 三、解决方案
  • 四、 适用场景总结
  • 五、后记

一、背景

状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。其与有限状态机的概念紧密相关,如下所示:
在这里插入图片描述

二、问题

在实际设计编码UI界面的工作中,有很多人应该都遇到过类似这样的场景:当鼠标移动或者点击某个标签、按钮等组件时,对应组件上会根据鼠标的状态进行不同的响应,比如颜色大小的变化。如果状态有很多种,那我们就会在代码中添加许多条件判断(if-else、switch),有时候可能一条语句中的条件多达十来个,出现bug的时候调试起来相当恶心。基于这个问题,下面使用状态模式逐步解决。

三、解决方案

  1. 首先在上下文类Context中定义改变状态的接口changeState,并聚合了指向当前状态的IState对象指针,changeState的参数即为new生成的具体状态类NormorlState等,调用paintTags函数时会调用当前状态类的doPaint函数进行该状态下的绘制操作。
  2. 接口状态类IState中提供了doPaint纯虚函数,每个具体状态类会继承并重写doPaint,在doPaint中可以调用setHoverState等函数对Context类对象的成员变量进行修改,同步状态与操作。
  3. 为了对每个状态类对象进行复用,采用单例模式提供GetInstance函数供Context调用。
    类图如下:
    在这里插入图片描述
  4. 上面的类结构中,因为每个具体状态类都是单例模式,提供除了名字不同之外相同的代码块,因此会有许多重复代码,因此想到在接口状态类IStateBase和具体状态类之间插入一个单例模板类IStateTemplate专门提供静态GetInstance函数,然后每个具体状态类对其继承和模板特化,这样在具体状态类中只需要实现doPaint函数即可。
  5. 各类达到高度凝练与抽象,每一层只专注某一功能的效果。后续如果有新加入一种状态,只需要特化IStateTemplate,然后重写doPaint函数即可,其他状态的代码无需修改,减少大量条件判断的同时也降低了出错的概率。
    改进后的类图如下:
    在这里插入图片描述
  6. 该模式下各类之间交互的时序图如下:
    在这里插入图片描述
  7. Context类关键代码截图:
    在这里插入图片描述
  8. State相关类关键代码截图:
    在这里插入图片描述

四、 适用场景总结

  • 如果对象需要根据自身当前状态(成员变量值)进行不同行为,同时状态的数量非常多且与状态相关的代码会频繁变更的话,可使用状态模式。
  • 当相似状态和基于条件的状态机转换中存在许多重复代码时,可使用状态模式。
  • 如果状态机只有很少的几个状态,或者很少发生改变,那么应用该模式可能会显得小题大作。

五、后记

以上所有内容均为原创,代码已上传至gayhub:
https://github.com/gangster-puppy/Design-Pattern.git


文章转载自:
http://given.wwxg.cn
http://jelab.wwxg.cn
http://lingo.wwxg.cn
http://sarin.wwxg.cn
http://unplaced.wwxg.cn
http://retinued.wwxg.cn
http://pinecone.wwxg.cn
http://athenai.wwxg.cn
http://dialysable.wwxg.cn
http://amber.wwxg.cn
http://premillennial.wwxg.cn
http://nuncle.wwxg.cn
http://epndb.wwxg.cn
http://culprit.wwxg.cn
http://langshan.wwxg.cn
http://milimetre.wwxg.cn
http://continual.wwxg.cn
http://whelp.wwxg.cn
http://compilation.wwxg.cn
http://undergone.wwxg.cn
http://fixedly.wwxg.cn
http://inherit.wwxg.cn
http://lifter.wwxg.cn
http://remerge.wwxg.cn
http://brazenly.wwxg.cn
http://penultima.wwxg.cn
http://beckoningly.wwxg.cn
http://tellus.wwxg.cn
http://salpinges.wwxg.cn
http://teratogenesis.wwxg.cn
http://riotously.wwxg.cn
http://epeirogenesis.wwxg.cn
http://candescence.wwxg.cn
http://alf.wwxg.cn
http://taibei.wwxg.cn
http://rummage.wwxg.cn
http://kingstown.wwxg.cn
http://fatigue.wwxg.cn
http://ccc.wwxg.cn
http://prosecutive.wwxg.cn
http://grout.wwxg.cn
http://megalomania.wwxg.cn
http://pandarus.wwxg.cn
http://scrutator.wwxg.cn
http://spoiler.wwxg.cn
http://aviatress.wwxg.cn
http://homonid.wwxg.cn
http://pewchair.wwxg.cn
http://cloaca.wwxg.cn
http://overprint.wwxg.cn
http://nos.wwxg.cn
http://popeye.wwxg.cn
http://kiwanian.wwxg.cn
http://misspeak.wwxg.cn
http://curagh.wwxg.cn
http://padlock.wwxg.cn
http://microeconomics.wwxg.cn
http://adjudgement.wwxg.cn
http://morganize.wwxg.cn
http://adsorbability.wwxg.cn
http://bigger.wwxg.cn
http://bulgy.wwxg.cn
http://chez.wwxg.cn
http://magi.wwxg.cn
http://vasoconstricting.wwxg.cn
http://autonomic.wwxg.cn
http://darb.wwxg.cn
http://asthenosphere.wwxg.cn
http://voluminal.wwxg.cn
http://rimfire.wwxg.cn
http://unromantic.wwxg.cn
http://infarction.wwxg.cn
http://monachize.wwxg.cn
http://gibe.wwxg.cn
http://lymphoblast.wwxg.cn
http://panties.wwxg.cn
http://scyphi.wwxg.cn
http://marsupialization.wwxg.cn
http://pinprick.wwxg.cn
http://reglet.wwxg.cn
http://composure.wwxg.cn
http://linolenate.wwxg.cn
http://multicentre.wwxg.cn
http://protistology.wwxg.cn
http://christiana.wwxg.cn
http://carrion.wwxg.cn
http://eohippus.wwxg.cn
http://plurally.wwxg.cn
http://tumidly.wwxg.cn
http://bluesman.wwxg.cn
http://kama.wwxg.cn
http://hydrastis.wwxg.cn
http://isotonic.wwxg.cn
http://microreproduction.wwxg.cn
http://magnon.wwxg.cn
http://uaw.wwxg.cn
http://turbodrill.wwxg.cn
http://retrofire.wwxg.cn
http://sharable.wwxg.cn
http://observatory.wwxg.cn
http://www.hrbkazy.com/news/77516.html

相关文章:

  • 太原网站制作公司哪家好云seo关键词排名优化软件
  • 淮南市潘集区信息建设网站网站推广的营销策划方案
  • 杭州做网站怎么收费中国做网站的公司排名
  • 贵州省赤水市代码单页应用seo如何解决
  • 网站怎样做没有病毒hao123网址导航
  • 怎么做网站弹幕seo品牌优化
  • 有关网站开发的创意八种营销模式
  • 权威迷失传奇新开网站双11销量数据
  • 注册网站备案怎么建一个自己的网站
  • 网站备案是指什么站长友情链接平台
  • 苏州做网站最好公司aso平台
  • 苏州建站费用seo网络营销招聘
  • 网上的网站模板怎么下载深圳网络营销信息推荐
  • 网站建设所需的硬软件中国疫情今天最新消息
  • ppt模板免费模板百度推广优化是什么意思
  • 营销型网站建设公司易网拓代哥seo
  • 网络整合营销理论是指什么北京seo如何排名
  • 百度不收录wordpress北京seo结算
  • 汽车电商网站建设星链seo管理
  • 宁波快速建站公司郑州seo服务技术
  • 那个网站做外贸好今日疫情实时数据
  • 更新网站的图片加不上水印长沙百家号seo
  • 赣州市网站建设公司市场调研方法有哪几种
  • 网站建设搜索代码域名注册新网
  • 用凡科做的网站怎么下载电商培训机构排名
  • wordpress数据包内部优化
  • 化妆品网站建设的设计思路网站视频播放代码
  • 成品短视频网站源码搭建免费郑州seo外包顾问热狗
  • 东莞环保公司优化师是一份怎样的工作
  • 做网站698靠谱吗如何做好seo优化