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

如何模仿网站模板seo关键词排名怎么提升

如何模仿网站模板,seo关键词排名怎么提升,可以访问电脑网页的浏览器,潍坊注册公司流程和费用标准什么是状态模式#xff1f; 状态模式是一种行为型设计模式#xff0c;它允许一个对象在其内部状态发生改变时#xff0c;动态改变其行为。通过将状态相关的逻辑封装到独立的类中#xff0c;状态模式能够将状态管理与行为解耦#xff0c;从而让系统更加灵活和可维护。 通…什么是状态模式 状态模式是一种行为型设计模式它允许一个对象在其内部状态发生改变时动态改变其行为。通过将状态相关的逻辑封装到独立的类中状态模式能够将状态管理与行为解耦从而让系统更加灵活和可维护。 通俗理解 想象一个自动售货机它有以下几种状态 无硬币状态等待用户投入硬币。有硬币状态用户可以选择商品。售货状态用户选择商品后售货机正在出货。缺货状态商品已售罄。 售货机的行为完全依赖于当前的状态比如 在无硬币状态下用户无法选择商品。在有硬币状态下用户可以选择商品。在售货状态下售货机执行出货操作。 状态模式的核心就是将状态逻辑抽象为独立的状态类并通过上下文类如售货机动态切换状态对象进而改变对象的行为。 状态模式的特点 优点 清晰封装状态逻辑 每种状态的逻辑被集中到对应的状态类中逻辑清晰且易于管理。 动态切换行为 对象的行为可以通过切换状态动态改变无需修改上下文类的代码。 扩展性强 新增状态只需添加新的状态类不影响现有代码符合开闭原则。 缺点 类的数量增加 每种状态都需要一个单独的类可能导致类数量较多。 状态切换逻辑分散 状态之间的切换逻辑分布在多个状态类中增加了维护的复杂性。 状态模式的结构 UML类图 ---------------------| Context | // 上下文类管理当前状态---------------------| - state: State || setState(state) || request() |---------------------^|---------------------| State | // 抽象状态类---------------------| handle() |---------------------^|---------------------- ----------------------| ConcreteStateA | | ConcreteStateB | // 具体状态类---------------------- ----------------------| handle() | | handle() |---------------------- ----------------------组成部分 State抽象状态类 定义了所有状态的通用接口例如insertCoin()、selectProduct()等。 ConcreteState具体状态类 实现State接口定义与特定状态相关的行为。 Context上下文类 持有一个状态对象调用当前状态的行为。负责在运行时切换状态对象。 案例自动售货机 需求描述 设计一个简单的自动售货机支持以下功能 无硬币状态用户不能选择商品。有硬币状态用户可以选择商品。售货状态用户选择商品后售货机出货。 目标 实现售货机的状态管理使得行为随着状态变化而动态改变。状态切换应简单且易于扩展。 完整代码实现 以下是状态模式在自动售货机中的应用输出为中文附带详细注释。 #include iostream #include memory #include string// 抽象状态类 class State { public:virtual void insertCoin() 0; // 投入硬币virtual void selectProduct() 0; // 选择商品virtual void dispenseProduct() 0; // 出货virtual ~State() default; };// 前向声明解决状态类互相引用的问题 class VendingMachine; class HasCoinState;// 上下文类自动售货机 class VendingMachine { private:std::shared_ptrState currentState; // 当前状态public:void setState(std::shared_ptrState state) {currentState state; // 切换状态}// 调用当前状态的方法void insertCoin() {currentState-insertCoin();}void selectProduct() {currentState-selectProduct();}void dispenseProduct() {currentState-dispenseProduct();} };// 具体状态类无硬币状态 class NoCoinState : public State { private:VendingMachine* machine; // 上下文public:explicit NoCoinState(VendingMachine* machine) : machine(machine) {}void insertCoin() override {std::cout 硬币已投入进入有硬币状态。 std::endl;machine-setState(std::static_pointer_castState(std::make_sharedHasCoinState(machine))); // 切换到有硬币状态}void selectProduct() override {std::cout 请先投入硬币。 std::endl;}void dispenseProduct() override {std::cout 请先投入硬币并选择商品。 std::endl;} };// 具体状态类有硬币状态 class HasCoinState : public State { private:VendingMachine* machine;public:explicit HasCoinState(VendingMachine* machine) : machine(machine) {}void insertCoin() override {std::cout 硬币已存在请选择商品。 std::endl;}void selectProduct() override {std::cout 商品已选择正在出货。 std::endl;machine-setState(std::static_pointer_castState(std::make_sharedNoCoinState(machine))); // 模拟出货后切换到无硬币状态}void dispenseProduct() override {std::cout 请先选择商品。 std::endl;} };// 客户端代码 int main() {// 创建自动售货机并设置初始状态VendingMachine machine;machine.setState(std::make_sharedNoCoinState(machine));// 测试售货机的功能std::cout 测试场景 1无硬币状态 std::endl;machine.selectProduct(); // 未投硬币时选择商品machine.insertCoin(); // 投入硬币std::cout \n 测试场景 2有硬币状态 std::endl;machine.selectProduct(); // 投币后选择商品return 0; }运行结果 测试场景 1无硬币状态 请先投入硬币。 硬币已投入进入有硬币状态。 测试场景 2有硬币状态 商品已选择正在出货。代码解读 1. 抽象状态类State class State { public:virtual void insertCoin() 0;virtual void selectProduct() 0;virtual void dispenseProduct() 0;virtual ~State() default; };定义了所有状态的接口。子类实现这些方法来处理具体的状态逻辑。 2. 上下文类VendingMachine class VendingMachine { private:std::shared_ptrState currentState;public:void setState(std::shared_ptrState state) {currentState state;}void insertCoin() {currentState-insertCoin();}void selectProduct() {currentState-selectProduct();}void dispenseProduct() {currentState-dispenseProduct();} };持有当前状态对象并将行为委托给当前状态。通过setState方法切换状态。 3. 具体状态类 无硬币状态 void insertCoin() override {std::cout 硬币已投入进入有硬币状态。 std::endl;machine-setState(std::static_pointer_castState(std::make_sharedHasCoinState(machine))); }有硬币状态 void selectProduct() override {std::cout 商品已选择正在出货。 std::endl;machine-setState(std::static_pointer_castState(std::make_sharedNoCoinState(machine))); }每个具体状态实现了当前状态的行为逻辑同时可以切换到其他状态。 状态模式的应用场景 对象行为取决于状态 自动售货机、订单状态管理、游戏角色状态如站立、跑动、跳跃等。 需要消除复杂条件判断 替代if-else或switch语句将状态逻辑分散到独立的状态类中。 总结 状态模式是一种非常实用的设计模式它通过将状态逻辑封装到独立的类中动态改变对象的行为从而提高代码的扩展性和可维护性。 核心优势 行为动态改变通过切换状态对象动态改变对象的行为。易扩展新增状态只需添加状态类不影响现有代码。逻辑清晰每个状态的逻辑集中在对应的状态类中代码更易于理解和维护。 典型应用 自动售货机在线订单状态待支付、已支付、已发货等游戏角色状态站立、奔跑、跳跃等
http://www.w-s-a.com/news/758783/

相关文章:

  • 做班级网站的目的网站设计制作公司需要什么资质
  • 济南做网站哪家好财政网站平台建设不足
  • php网站建设招聘网站开发与设计论文
  • 上海 网站建设平台 补贴网站开发招标文件范本
  • 延安网站建设公司电话手机上那个网站做农产品推广比较好
  • 增城哪家网站建设好如何做网站实名认证
  • 常州地区做网站个人购物网站需要备案吗
  • 网站建设公司 跨界鱼科技专业做服务器的网站都有哪些
  • 欧洲网站服务器网站建设费用计入什么科目
  • 网站的色调苏州策划网站模板建站公司
  • 怎么看网站用的什么后台公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 可以看的网站的浏览器有哪些专业APP客户端做网站
  • 如何做网站推广自己的产品推荐个网站好吗
  • 网站经营范围wordpress注入点
  • 学校网站开发协议夫妻网络网站建设
  • 福州网站seo推广优化微信商家小程序怎么弄
  • 免费网站推广工具在游戏网站做中介合法
  • 网站建设前的规划网站建设公司六安
  • 公司注册网站开发的行业表述南宁在百度上建网站
  • 创建企业网站国内网站用django做的
  • 云主机网站的空间在哪制作微网站的平台
  • 长沙做网站 青创互联wordpress4.4.1
  • 宜昌哪里有专业做网站的网站开发做什么的
  • 3小说网站开发东莞网站公司哪家好
  • 做网站安全联盟解ps网站设计概述
  • 聊城公司做网站wordpress连接域名
  • 宣传网站建设的意义台州行app官网下载
  • 温州 网站优化网站开发公司前置审批
  • 网站开发具体的工作内容网站下载app免费
  • seo网站建设时文章频率昆山网站建设ikelv