redis网站开发教程,建设信用卡银行商城网站,手机版做我女朋友网站,wordpress linux下载文件文章目录 一、什么是设计模式二、设计模式类型简单工厂模式及应用场景定义抽象产品类和具体产品类实现工厂类客户端代码注意事项 一、什么是设计模式
设计模式#xff1a;在软件研发过程中#xff0c;经过实战验证#xff0c;用于解决在特定环境下、重复出现的#xff0c;… 文章目录 一、什么是设计模式二、设计模式类型简单工厂模式及应用场景定义抽象产品类和具体产品类实现工厂类客户端代码注意事项 一、什么是设计模式
设计模式在软件研发过程中经过实战验证用于解决在特定环境下、重复出现的特定问题的解决方案基于面向对象的设计原则主要是对接口编程 而不是对实现编程、优先使用对象组合而不是继承
二、设计模式类型
23 种设计模式可分为三类创建型模式、结构型模式、行为模式。 简单工厂模式、单例模式、抽象工厂模式、原型模式、建造者模式5 种。 代理模式、外观模式、享元模式、组合模式、装饰器模式、适配器模式、桥接模式7 种。 访问者模式、策略模式、模板模式、状态模式、备忘录模式、观察者模式、中介者模式、迭代器模式、解释器模式、责任链模式、命令模式11 种
简单工厂模式及应用场景
简单工厂模式主要解决接口选择问题。 Factory(工厂)的核心部分负责实现创建所有产品的内部逻辑工厂类可以被外界直接调用创建所需对象即可。
定义抽象产品类和具体产品类
首先定义一个抽象产品类和几个具体产品类。这些类将实现一个共同的接口。
// 抽象产品类
class Product {
public:virtual void use() 0; // 纯虚函数virtual ~Product() {} // 虚析构函数确保派生类对象能正确析构
};// 具体产品类A
class ConcreteProductA : public Product {
public:void use() override {std::cout Result of the product A std::endl;}
};// 具体产品类B
class ConcreteProductB : public Product {
public:void use() override {std::cout Result of the product B std::endl;}
};实现工厂类
接下来实现一个工厂类它根据输入参数决定创建哪种产品对象。
// 工厂类
class SimpleFactory {
public:static Product* createProduct(const std::string type) {if (type A) {return new ConcreteProductA();} else if (type B) {return new ConcreteProductB();}return nullptr;}
};客户端代码
最后编写客户端代码使用工厂类创建产品对象。
#include iostream
#include stringint main() {std::string type A; // 假设客户端需要创建产品AProduct* product SimpleFactory::createProduct(type);if (product ! nullptr) {product-use();delete product; // 记得释放内存}type B; // 现在客户端需要创建产品Bproduct SimpleFactory::createProduct(type);if (product ! nullptr) {product-use();delete product; // 记得释放内存}return 0;
}注意事项
扩展性如果产品类非常多工厂类可能会变得复杂。在这种情况下可以考虑使用工厂方法模式或抽象工厂模式。