高端大气上档次的网站,网络工程师自学网站,果壳 wordpress,免费素材网站大全1 简介#xff1a; 工厂方法模式是一种创建型设计模式#xff0c;用于通过一个公共接口来创建具体对象#xff0c;而无需在客户端代码中显式指定其具体类。它将对象的实例化委托给工厂类#xff0c;由工厂类根据客户端的请求创建相应的对象。 2 实现步骤#xff1a; 以下… 1 简介 工厂方法模式是一种创建型设计模式用于通过一个公共接口来创建具体对象而无需在客户端代码中显式指定其具体类。它将对象的实例化委托给工厂类由工厂类根据客户端的请求创建相应的对象。 2 实现步骤 以下是使用C实现工厂方法模式的步骤 a. 定义产品接口首先定义一个产品接口该接口声明了产品类的公共方法。 class Product {
public:virtual void operation() 0;
};b. 实现具体产品类创建实现产品接口的具体产品类。 class ConcreteProductA : public Product {
public:void operation() override {// 具体产品A的操作}
};class ConcreteProductB : public Product {
public:void operation() override {// 具体产品B的操作}
};c. 定义工厂接口创建一个工厂接口声明用于创建产品的工厂方法。 class Factory {
public:virtual Product* createProduct() 0;
};d. 实现具体工厂类创建具体工厂类来实现工厂接口根据客户端的请求创建相应的产品。 class ConcreteFactoryA : public Factory {
public:Product* createProduct() override {return new ConcreteProductA();}
};class ConcreteFactoryB : public Factory {
public:Product* createProduct() override {return new ConcreteProductB();}
};3 示例代码 以下是一个使用工厂方法模式的示例代码 #include iostreamint main() {// 使用具体工厂A创建产品AFactory* factoryA new ConcreteFactoryA();Product* productA factoryA-createProduct();productA-operation();// 使用具体工厂B创建产品BFactory* factoryB new ConcreteFactoryB();Product* productB factoryB-createProduct();productB-operation();delete factoryA;delete factoryB;delete productA;delete productB;return 0;
}上述代码中客户端使用不同的具体工厂来创建不同的产品并调用产品的操作方法。 4 优点 将对象的创建与使用分离降低耦合性。客户端代码无需知道具体产品类只需要关心产品接口。可以灵活扩展新的产品和工厂符合开闭原则。 5 注意事项 工厂方法模式适用于创建复杂对象或对象构建过程需要进行某些额外处理的场景。使用工厂方法模式时需确保每个具体产品都对应一个具体工厂。