栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++抽象工厂模式(3)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++抽象工厂模式(3)

#include 
using namespace std;
//抽象产品
class Product {
   public:
    virtual void show() = 0;
};
//抽象产品族1
class KeyBoard : public Product {};
//罗技键盘
class LogiKeyBoard : public KeyBoard {
    void show() { cout << "罗技键盘......" << endl; }
};
//雷蛇键盘
class RazerKeyBoard : public KeyBoard {
    void show() { cout << "雷蛇键盘......" << endl; }
};
//抽象产品族2
class Mouse : public Product {};
//罗技鼠标
class LogiMouse : public Mouse {
    void show() { cout << "罗技鼠标......" << endl; }
};
class RazerMouse : public Mouse {
    void show() { cout << "雷蛇鼠标......" << endl; }
};
//抽象工厂
class Factory {
   public:
    virtual KeyBoard* createKeyBoard() = 0;
    virtual Mouse* createMouse() = 0;
};
class LogiFactory : public Factory {
    KeyBoard* createKeyBoard() { return new LogiKeyBoard; }
    Mouse* createMouse() { return new LogiMouse; }
};
class RazerFactory : public Factory {
    KeyBoard* createKeyBoard() { return new RazerKeyBoard; }
    Mouse* createMouse() { return new RazerMouse; }
};

int main() {
    Factory* factory = new LogiFactory;
    KeyBoard* keyBoard = factory->createKeyBoard();
    Mouse* mouse = factory->createMouse();
    keyBoard->show();
    mouse->show();
    delete factory;
    delete keyBoard;
    delete mouse;
    factory = new RazerFactory;
    keyBoard = factory->createKeyBoard();
    mouse = factory->createMouse();
    keyBoard->show();
    mouse->show();
    delete factory;
    delete keyBoard;
    delete mouse;
    factory = NULL;
    keyBoard = NULL;
    mouse = NULL;
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号