设计模式
设计原则一:开闭原则
设计原则二:迪米特法则
设计原则三:合成复用原则
设计原则四:依赖倒转原则
设计模式一:简单工程模式
自上而下的软件开发流程
UML类图
UML图六种箭头的含义(泛化、实现、依赖、关联、聚合、组合)
C++11的新变化
未命名
本文档使用 MrDoc 发布
-
+
首页
设计模式一:简单工程模式
当我们需要创建一个对象,但是不希望客户端直接与具体的类耦合在一起时,简单工厂模式就可以派上用场。简单工厂模式是一种创建型设计模式,它提供了一个统一的接口来实例化一组相关或者相互依赖的对象,而不需要客户端知道具体的实现类。 简单工厂模式包含以下几个角色: 1. **工厂(Factory)**:负责创建具体产品的类。客户端通过工厂来创建对象,而无需了解实际创建的具体类。 2. **产品(Product)**:抽象产品类或者接口,定义了具体产品的通用行为。 3. **具体产品(Concrete Product)**:实现了产品接口的具体类,由工厂根据客户端的需求创建并返回。 简单工厂模式的实现步骤如下: 1. 定义一个抽象产品类或接口,声明产品的通用行为。 2. 创建具体产品类,实现抽象产品类或接口。 3. 创建一个工厂类,负责根据客户端的需求创建具体产品的实例。 4. 客户端通过工厂类来创建具体产品的实例,而无需直接实例化具体产品。 简单工厂模式的优点包括: - 将对象的创建和使用分离,客户端只需要知道工厂类即可,降低了客户端和具体产品类的耦合性。 - 可以通过修改工厂类来改变实例化的具体产品类,而不需要修改客户端代码。 然而,简单工厂模式也有一些缺点: - 工厂类职责过重,一旦工厂类出现问题,将影响所有具体产品的创建。 - 添加新的具体产品类时,需要修改工厂类,违反了开闭原则。 - 不支持创建复杂对象,例如对象的创建过程涉及到复杂的逻辑或依赖关系时,简单工厂模式不太适用。 一个例子  ```cpp #include <iostream> using namespace std; //抽象水果 class AbstractFruit{ public: virtual void ShowName() = 0; }; //苹果 class Apple : public AbstractFruit{ public: virtual void ShowName(){ cout<<"我是苹果"<<endl; } }; //香蕉 class Banana : public AbstractFruit{ public: void ShowName(){ cout<<"我是香蕉"<<endl; } }; //鸭梨 class Pear : public AbstractFruit{ public: virtual void ShowName(){ cout << "我是鸭梨"<<endl; } }; //水果工程 class FruitFactory{ public: static AbstractFruit* CreateFruit(string flag){ if (flag == "apple"){ return new Apple; } else if (flag == "banana"){ return new Banana; } else if (flag == "pear"){ return new Pear; } else { return NULL; } } }; void test01(){ FruitFactory* factory = new FruitFactory; AbstractFruit* fruit = factory->CreateFruit("apple"); fruit->ShowName(); delete fruit; fruit = factory->CreateFruit("banana"); fruit->ShowName(); delete fruit; fruit = factory->CreateFruit("pear"); fruit->ShowName(); delete fruit; delete factory; } int main(void){ test01(); return 0; } ```
admin
2024年3月19日 10:38
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码