简单工厂模式1

https://blog.csdn.net/weixin_43754049/article/details/125895330

#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:
    virtual 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;
        }
    }
    static int a;
};
     int FruitFactory::a = 8;
void test01() {
    //创建一个工厂对象
    //FruitFactory* factory = new FruitFactory;   // zane 
    //这里我们发现不再像普通的多态一样需要new Apple;
    //而是在工厂的成员函数参数中传入一个string
    //让工厂类自动帮我们创建一个Apple对象 
    //不用考虑创建过程 拿来直接用 减少了耦合性    
     cout <<FruitFactory::a << endl;
    AbstractFruit* fruit = FruitFactory::CreateFruit("apple");
    fruit->ShowName();
    delete fruit;
    
    fruit = FruitFactory::CreateFruit("banana");
    fruit->ShowName();
    delete fruit;
 
    fruit = FruitFactory::CreateFruit("pear");
    fruit->ShowName();
    delete fruit;
    //delete factory;  // zane
}   
int main() {
    test01();
    return 0;
}

总结:好代码就是让耦合性不断的变低 这里直接传一个string就可以创建对象了 比传统的多态更进了一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值