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

网站建设加盟招商菏泽百度推广公司电话

网站建设加盟招商,菏泽百度推广公司电话,mac 网站开发工具,adsense wordpress一、说明 状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为 (一) 解决问题 在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性 (二) 使用场景 当对象的行为取决于其状态&#…

一、说明

状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为

(一) 解决问题

在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性

(二) 使用场景

  • 当对象的行为取决于其状态,并且该状态可以在运行时动态改变时
  • 当有大量的条件语句用于控制对象的行为,并且这些条件在不同的状态下具有不同的表现时

二、结构

  1. 上下文(Context)保存了对于一个具体状态对象的引用,并会将所有与该状态相关的工作委派给它。上下文通过状态接口与状态对象交互,且会提供一个设置器用于传递新的状态对象。
  2. 状态(State)接口会声明特定于状态的方法。这些方法应能被其他所有具体状态所理解,因为你不希望某些状态所拥有的方法永远不会被调用。
  3. 具体状态(ConcreteStates)会自行实现特定于状态的方法。为了避免多个状态中包含相似代码,你可以提供一个封装有部分通用行为的中间抽象类。状态对象可存储对于上下文对象的反向引用。状态可以通过该引用从上下文处获取所需信息,并且能触发状态转移。
  4. 上下文和具体状态都可以设置上下文的下个状态,并可通过替换连接到上下文的状态对象来完成实际的状态转换。

三、伪代码

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__doc__ = """
状态模式例:水在不同温度下状态也会不同
"""from abc import ABC, abstractmethodclass State(ABC):"""状态基类"""@abstractmethoddef handle(self, temperature):passclass SolidState(State):"""具体状态类"""def handle(self, temperature):if temperature < 0:return "冰"class LiquidState(State):"""具体状态类"""def handle(self, temperature):if 0 <= temperature < 100:return "液态水"class GaseousState(State):"""具体状态类"""def handle(self, temperature):if temperature >= 100:return "水蒸气"class Water:"""上下文类(水)"""def __init__(self):self.state = LiquidState()def change_state(self, state):self.state = statedef get_state(self, temperature):return self.state.handle(temperature)if __name__ == '__main__':"""水在 25 摄氏度时为:液态水水在 -5 摄氏度时为:冰水在 105 摄氏度时为:水蒸气"""water = Water()print(f"水在 25 摄氏度时为:{water.get_state(25)}")water.change_state(SolidState())print(f"水在 -5 摄氏度时为:{water.get_state(-5)}")water.change_state(GaseousState())print(f"水在 105 摄氏度时为:{water.get_state(105)}")

四、优缺点

优点

  • 开闭原则:无需修改已有状态类和上下文就能引入新状态
  • 通过消除臃肿的状态机条件语句简化上下文代码

缺点

  • 可能会导致类的数量增加,因为每个状态都需要一个对应的类
  • 如果状态转换逻辑过于复杂,可能会导致状态类之间的相互调用,使得代码难以维护

【Python笔记】设计模式-CSDN博客

http://www.hkea.cn/news/816179/

相关文章:

  • 网站ip拦截免费网站搭建平台
  • 深圳企业网站建设公司快速申请免费个人网站
  • 唯品会 一家专门做特卖的网站沈阳seo按天计费
  • 聊城手机网站建设郑州seo服务技术
  • 个人定做衣服店江门seo推广公司
  • 网站开发与网站建设山东济南seo整站优化费用
  • 香港疫情最新消息今天深圳seo教程
  • 维护一个网站难吗免费发布外链
  • 南安市网站建设成都今天重大新闻事件
  • 网站后台补丁如何做软文有哪几种类型
  • 网站建设的费用包括哪些内容资讯门户类网站有哪些
  • 一站式服务图片制作网页的基本步骤
  • 个人网站建设网站网络网站推广
  • asp做的药店网站模板北京百度快照推广公司
  • 网站建设泉州效率网络seo的优化策略有哪些
  • 页网站无锡网站制作推广
  • 一流的龙岗网站建设目前最靠谱的推广平台
  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案
  • 网站开发导航栏网站制作的费用
  • 盐城网站设计网站流量统计工具
  • 网站上如何做相关推荐郑州建网站的公司
  • 漂亮大气的装潢室内设计网站模板 单页式html5网页模板包前端优化
  • 论坛网站开发开题报告青岛百度推广多少钱