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

青岛网站建设公司好找吗河南专业网站建设

青岛网站建设公司好找吗,河南专业网站建设,网站推广seo系统,精品网站建设公司一、说明 状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为 (一) 解决问题 在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性 (二) 使用场景 当对象的行为取决于其状态&#…

一、说明

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

(一) 解决问题

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

(二) 使用场景

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

二、结构

  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/641533/

相关文章:

  • 申请做网站、论坛版主app推广接单
  • 青海网站建设广州seo优化推广
  • 物流公司网站制作模板上海网站关键词排名
  • 广西建设人才网搜索引擎优化的目标
  • 比汉斯设计网站素材图片搜索识图入口
  • php网站架设教程英雄联盟韩国
  • 做毕设好的网站百度客服电话24小时
  • 上海手机网站建设电话咨询seo综合查询系统
  • wordpress 4.6 中文版沈阳seo
  • 文件管理软件天津搜索引擎优化
  • 九亭网站建设全国疫情高峰时间表最新
  • 青岛网站建设公司武汉seo收费
  • mvc网站建设的实验报告怎么做优化
  • 有官网建手机网站千锋教育培训多少钱费用
  • b2c交易模式的网站有哪些百度营销客户端
  • flash 学习网站重庆网站seo多少钱
  • 年终总结ppt模板免费下载网站小红书seo排名规则
  • 自己架设网站口碑营销的产品有哪些
  • 湖北省网站备案最快几天天津百度推广排名优化
  • app在线开发制作平台seo网络优化前景怎么样
  • 商务网站的基本情况网站建设工作总结
  • 山西建设厅网站网络销售怎么聊客户
  • 软装素材网站有哪些seo网络排名优化哪家好
  • 邯郸市做网站建设网络口碑营销案例分析
  • 罗湖网站建设联系电话西安核心关键词排名
  • 如何编写网站电脑清理软件十大排名
  • 怎么给企业制作网站seo关键词排名优化哪好
  • 高仿服装网站建设西安百度关键词推广
  • 网站单页面怎么做的百度seo站长工具
  • 网站建设谢辞企业营销型网站有哪些