当前位置: 首页> 健康> 母婴 > 专业网站优化报价_厦门网站建设阳哥_全网营销国际系统_谷歌推广怎么样

专业网站优化报价_厦门网站建设阳哥_全网营销国际系统_谷歌推广怎么样

时间:2025/7/10 8:32:46来源:https://blog.csdn.net/weixin_73931631/article/details/144588432 浏览次数:0次
专业网站优化报价_厦门网站建设阳哥_全网营销国际系统_谷歌推广怎么样

1. 使用成员函数

        你可以通过定义成员函数来改变对象的状态。通常这些成员函数是类的“行为”,即对象状态变化的触发器。例如,可以通过 set 方法来修改对象的状态,或者通过特定的方法来改变对象的内部属性。

#include <iostream>
using namespace std;class Car {
private:int speed;public:Car() : speed(0) {}// 设置车速void setSpeed(int s) {if (s >= 0 && s <= 200) {
            speed = s;} else {
            cout << "Invalid speed!" << endl;}}// 获取车速int getSpeed() const {return speed;}// 增加车速void accelerate() {if (speed < 200) {
            speed += 10;}}// 减少车速void decelerate() {if (speed > 0) {
            speed -= 10;}}
};int main() {Car myCar;
    myCar.setSpeed(50);
    cout << "Current speed: " << myCar.getSpeed() << endl;
    myCar.accelerate();
    cout << "Speed after acceleration: " << myCar.getSpeed() << endl;
    myCar.decelerate();
    cout << "Speed after deceleration: " << myCar.getSpeed() << endl;return 0;
}

2. 使用状态模式 (State Pattern)

        状态模式允许一个对象在其内部状态改变时改变其行为。通过定义多个状态对象,并让它们管理自己的状态,可以实现动态变化的状态管理。

#include <iostream>
using namespace std;// 抽象状态类
class State {
public:virtual void handle() = 0;
};// 具体状态类:Idle状态
class IdleState : public State {
public:void handle() override {
        cout << "The car is idle." << endl;}
};// 具体状态类:Moving状态
class MovingState : public State {
public:void handle() override {
        cout << "The car is moving." << endl;}
};// 具体状态类:Stopped状态
class StoppedState : public State {
public:void handle() override {
        cout << "The car has stopped." << endl;}
};// 上下文类:Car类
class Car {
private:
    State* currentState;public:Car(State* state) : currentState(state) {}void setState(State* state) {
        currentState = state;}void handle() {
        currentState->handle();}
};int main() {Car myCar(new IdleState());    myCar.handle();  // The car is idle.    myCar.setState(new MovingState());
    myCar.handle();  // The car is moving.    myCar.setState(new StoppedState());
    myCar.handle();  // The car has stopped.return 0;
}

3. 使用枚举类型 (Enum) 和条件判断

        如果状态相对简单,且状态的数量有限,可以使用 enum 类型来表示不同的状态,并根据状态在程序中做不同的处理。

#include <iostream>
using namespace std;enum CarState {
    IDLE,
    MOVING,
    STOPPED
};class Car {
private:CarState state;public:Car() : state(IDLE) {}void setState(CarState newState) {
        state = newState;}void printState() const {switch(state) {case IDLE:   cout << "The car is idle." << endl; break;case MOVING: cout << "The car is moving." << endl; break;case STOPPED: cout << "The car has stopped." << endl; break;}}
};int main() {Car myCar;
    myCar.printState();  // The car is idle.    myCar.setState(MOVING);
    myCar.printState();  // The car is moving.    myCar.setState(STOPPED);
    myCar.printState();  // The car has stopped.return 0;
}

4. 使用观察者模式 (Observer Pattern)

        如果你希望在对象状态变化时通知其他对象,可以使用观察者模式。当对象的状态发生变化时,可以通知所有相关的观察者。

#include <iostream>
#include <vector>
using namespace std;// 抽象观察者类
class Observer {
public:virtual void update(int speed) = 0;
};// 具体观察者类
class Display : public Observer {
private:int speed;public:void update(int newSpeed) override {
        speed = newSpeed;
        cout << "The current speed is: " << speed << " km/h" << endl;}
};// 被观察者类
class Car {
private:int speed;
    vector<Observer*> observers;public:Car() : speed(0) {}void addObserver(Observer* observer) {
        observers.push_back(observer);}void setSpeed(int newSpeed) {
        speed = newSpeed;notifyObservers();}void notifyObservers() {for (Observer* observer : observers) {
            observer->update(speed);}}
};int main() {Car myCar;Display display;    myCar.addObserver(&display);    myCar.setSpeed(50);  // The current speed is: 50 km/h
    myCar.setSpeed(80);  // The current speed is: 80 km/hreturn 0;
}

总结:

  • 成员函数:通过在类中定义方法来控制和修改对象的状态。
  • 状态模式:适用于复杂的状态管理,可以动态切换对象的行为。
  • 枚举类型和条件判断:适用于简单的状态管理,通过 enumswitch 来管理状态变化。
  • 观察者模式:适用于当对象状态变化时需要通知其他对象的场景。
关键字:专业网站优化报价_厦门网站建设阳哥_全网营销国际系统_谷歌推广怎么样

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: