带你深入浅出设计模式:五、简单工厂模式:构建软件的高效生产“流水线”

此为设计模式谈!

总-分-总的结构生活化的例子给你讲解设计模式!

码农不易,各位学者学到东西请点赞收藏支持支持!

开始部分:

简单工厂模式就是通过一个工厂类创建对象,减少了客户端的代码的复杂性和耦合性。(耦合性:就是类似于关系紧密度)

分:

1.老规则,在vs中创建一个控制台应用程序

2.实现编码,这里用一个汽车制作工厂来作为辅助例子

2.1 实现抽象汽车基类

2.2 实现汽车产品类,继承抽象汽车基类

2.3 实现工厂类,用来生产汽车产品

2.4 当客户需要什么产品,跟工厂说,就生成具体产品,而不用客户了解汽车是如何构造的(降低耦合性)

#include <iostream>
using namespace std;

// 抽象汽车
class AbstractCar
{
public:
    virtual void ShowCarName() = 0;//纯虚函数
};


// 具体产品的汽车继承
// 凯美瑞
class Camry :public AbstractCar
{
    virtual void ShowCarName()
    {
        cout << "Camry Car." << endl;
    }
};


// 迈腾
class Magotan :public AbstractCar
{
    virtual void ShowCarName()
    {
        cout << "Magotan Car." << endl;
    }
};


// 奥迪
class Audi :public AbstractCar
{
    virtual void ShowCarName()
    {
        cout << "Audi Car." << endl;
    }
};


// 奔驰
class Benz :public AbstractCar
{
    virtual void ShowCarName()
    {
        cout << "Benz Car." << endl;
    }
};

// 通过传递参数来确定需要生成那汽车
// 汽车工厂
class CarFactory
{
public:
    static AbstractCar* CreateCarFunc(string cname)
    {
        if (cname == "Camry")
            // 具体生产细节......
            return new Camry;
        else if (cname == "Magotan")
            // 具体生产细节......
            return new Magotan;
        else if (cname == "Audi")
            // 具体生产细节......
            return new Audi;
        else if (cname == "Benz")
            // 具体生产细节......
            return new Benz;
        else
            return nullptr;           

    }   
};




int main()
{
    // 创建工厂
    CarFactory* fty = new CarFactory;

    // 创建汽车
    AbstractCar* car;

    // 指定工厂需要创建的汽车
    car = fty->CreateCarFunc("Benz");
    car->ShowCarName();
    delete car;

    car = fty->CreateCarFunc("Camry");
    car->ShowCarName();
    delete car;

    car = fty->CreateCarFunc("Audi");
    car->ShowCarName();
    delete car;

    car = fty->CreateCarFunc("Magotan");
    car->ShowCarName();
    delete car;

    return 0;
}

3.以下为简单工厂模式的结构图和三大模块,来辅助理解,主要为工厂、抽象产品基类、实际产品

总:在开发中,简单工厂模式主要解决接口选择问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值