欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > C/C++基础知识复习(50)

C/C++基础知识复习(50)

2025/3/9 3:27:55 来源:https://blog.csdn.net/m0_72883750/article/details/146061007  浏览:    关键词:C/C++基础知识复习(50)

1. ​如何处理对象的状态变化?

状态模式是一种行为设计模式,允许对象在其内部状态改变时改变其行为。

通俗解释:

对象的状态就是它的“心情”或“模式”,比如灯的开关状态。

例子:

一个电灯有“开”和“关”两种状态,我们需要根据状态改变它的行为。

详细方法:

使用状态模式,将状态抽象成一个类。

代码示例:
class LightState {
public:virtual void handle() = 0;
};class OnState : public LightState {
public:void handle() override { std::cout << "Light is ON\n"; }
};class OffState : public LightState {
public:void handle() override { std::cout << "Light is OFF\n"; }
};class Light {
private:LightState* state;
public:Light() : state(new OffState()) {}void setState(LightState* s) { state = s; }void pressSwitch() { state->handle(); }
};int main() {Light light;light.pressSwitch(); // 灯关light.setState(new OnState());light.pressSwitch(); // 灯开return 0;
}

2. ​如何实现工厂模式?

工厂模式是一种创建型设计模式,定义一个用于创建对象的接口,但让子类决定实例化哪个类。

通俗解释:

工厂模式就是通过一个“工厂”来创建对象,就像你去工厂定制一辆车。

例子:

你需要创建不同类型的车(轿车、卡车),但不想直接调用构造函数。

详细方法:

定义一个工厂类,根据输入参数创建不同的对象。

代码示例:
class Car {
public:virtual void drive() = 0;
};class Sedan : public Car {
public:void drive() override { std::cout << "Driving Sedan\n"; }
};class Truck : public Car {
public:void drive() override { std::cout << "Driving Truck\n"; }
};class CarFactory {
public:static Car* createCar(const std::string& type) {if (type == "Sedan") return new Sedan();if (type == "Truck") return new Truck();return nullptr;}
};int main() {Car* car = CarFactory::createCar("Sedan");car->drive(); // 开轿车delete car;return 0;
}

版权声明:

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

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

热搜词