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

萌宝宝投票网站怎么做百度搜索引擎营销如何实现

萌宝宝投票网站怎么做,百度搜索引擎营销如何实现,网站优化站外链接怎么做,wordpress微信管理状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。在状态模式中,对象将其行为委托给当前状态对象,从而在不同的状态下执行不同的行为,而不必在对象自身的代码中包含大量的条件语句。 通常,状…

状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。在状态模式中,对象将其行为委托给当前状态对象,从而在不同的状态下执行不同的行为,而不必在对象自身的代码中包含大量的条件语句。

通常,状态模式包含以下几个关键角色:

  1. Context(上下文):持有一个状态对象的引用,可以设置当前状态,并在状态发生变化时通知当前状态对象执行相应的行为。

  2. State(状态):定义了一个接口或抽象类,用于封装与Context的一个特定状态相关的行为。

  3. ConcreteState(具体状态):实现了State接口或抽象类,在其中实现了与特定状态相关的行为。

状态模式的优点包括:

  • 将与状态相关的行为封装到不同的状态类中,使代码结构更清晰,易于维护和扩展。
  • 减少了条件语句的使用,提高了代码的可读性和可维护性。
  • 将状态转换逻辑集中在Context中,使得状态之间的切换更加简单。

但是,状态模式也有一些缺点,例如:

  • 增加了类的数量,可能会导致系统中存在大量的状态类,增加了系统的复杂性。
  • 在状态过多或状态转换逻辑复杂的情况下,可能会导致状态管理变得困难。

总的来说,状态模式适用于需要根据对象的内部状态改变其行为的情况,可以帮助提高代码的可维护性和灵活性。

#include <iostream>
#include <memory>// 抽象状态类
class ElevatorState {
public:virtual void open() = 0;virtual void close() = 0;virtual void run() = 0;virtual void stop() = 0;
};// 具体状态类:打开状态
class OpenState : public ElevatorState {
public:void open() override {std::cout << "The elevator is already open." << std::endl;}void close() override {std::cout << "Closing the elevator door." << std::endl;}void run() override {std::cout << "Cannot run when the door is open." << std::endl;}void stop() override {std::cout << "Stopping the elevator." << std::endl;}
};// 具体状态类:关闭状态
class CloseState : public ElevatorState {
public:void open() override {std::cout << "Opening the elevator door." << std::endl;}void close() override {std::cout << "The elevator door is already closed." << std::endl;}void run() override {std::cout << "Running the elevator." << std::endl;}void stop() override {std::cout << "Stopping the elevator." << std::endl;}
};// 上下文类:电梯
class Elevator {
private:std::shared_ptr<ElevatorState> state;public:Elevator() {// 初始状态为关闭状态state = std::make_shared<CloseState>();}void setState(std::shared_ptr<ElevatorState> newState) {state = newState;}void open() {state->open();}void close() {state->close();}void run() {state->run();}void stop() {state->stop();}
};int main() {Elevator elevator;elevator.open();  // Opening the elevator door.elevator.close(); // Closing the elevator door.elevator.run();   // Running the elevator.elevator.stop();  // Stopping the elevator.return 0;
}/*
在这个示例中,我们首先定义了一个抽象状态类 ElevatorState,包含了四个虚函数,
分别代表电梯的四种状态:打开、关闭、运行和停止。然后定义了两个具体状态类 OpenState 和 CloseState,
分别代表电梯的打开和关闭状态,并实现了抽象状态类中的四个虚函数。接着定义了一个上下文类 Elevator,表示电梯对象,其中包含一个状态对象的引用,
并提供了一系列操作电梯的方法,这些方法在运行时会根据电梯的当前状态委托给状态对象来执行相应的行为。在 main 函数中,我们创建了一个电梯对象,并通过调用其各种方法来模拟电梯的操作。
在每次操作时,根据当前状态的不同,电梯会表现出不同的行为,这正是状态模式的作用所在。*/

觉得有帮助的话,打赏一下呗。。

           

http://www.yidumall.com/news/102715.html

相关文章:

  • 集团公司网站建设策划方案如何交换友情链接
  • 外贸出口网站建设app推广渠道商
  • 北京朝阳社会建设工作办公室网站seo咨询推广找推推蛙
  • 小红书网站开发费用苏州百度快照优化排名
  • 广东网站制作哪家强做网站用哪个软件
  • 手机微网站二级菜单怎么做百度seo工作室
  • 门户网站怎么做seo百度精准引流推广
  • 柳州 网站开发seo网站推广企业
  • 网站建设分金手指专业友情手机站
  • 中国建设管理信息网站网文网站排名
  • 数据库php网站开发论文网站优化设计公司
  • 华为怎么设置安全网站如何申请百度竞价排名
  • 学校网站建设毕业论文百度seo公司哪家好一点
  • 网站上全景云台怎么做的百度游戏官网
  • 杭州网站建设公司服务四川二级站seo整站优化排名
  • 产品线上营销有哪些方式百度seo效果
  • 网站被禁止访问怎么打开推广app下载
  • jsp做网站视频教程如何免费建立一个网站
  • 建设一个电子文学网站资金多少百度账号查询
  • 无锡网站制作公司报价市场调研表模板
  • 廊坊做网站哪家好石家庄seo外包的公司
  • 东莞做网站优化做网络推广怎么找客户
  • 衡水企业网站设计百度指数专业版价格
  • 做多级分销的网站海南百度竞价推广
  • 可以做专利聚类分析的免费网站全球外贸采购网
  • 批量网站访问检测seo网络优化师招聘
  • 网页打不开pdf文件怎么办慈溪seo
  • 企业形象设计vi模板seo 优化
  • 十堰响应式网站建设品牌营销策划公司哪家好
  • 滨江建设工程网站win10优化大师