首页 > 编程语言 >抽象工厂模式C++

抽象工厂模式C++

时间:2022-10-09 22:14:06浏览次数:58  
标签:delete woman show factory C++ 工厂 抽象 NULL man

[实验任务一]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

 

 

 

#include<iostream>
using namespace std;
//抽象产品类——Man类
class Man{
public:
       virtual void show() = 0;
};
//抽象产品类——Woman类
class Woman{
public:
       virtual void show() = 0;
};
//具体产品类——YellowMan类
class YellowMan : public Man{
public:
       virtual void show(){
             cout << "黄皮肤的男性" << endl;
       }
};
//具体产品类——BlackMan类
class BlackMan : public Man{
public:
       virtual void show(){
              cout << "黑皮肤的男性" << endl;
       }
};
//具体产品类——WhiteMan类
class WhiteMan : public Man{
public:
       virtual void show(){
              cout << "白皮肤的男性" << endl;
       }
};
//具体产品类——YellowWoman类
class YellowWoman : public Woman{
public:
       virtual void show(){
              cout << "黄皮肤的女性" << endl;
       }
};
//具体产品类——BlackWoman类
class BlackWoman : public Woman{
public:
       virtual void show(){
              cout << "黑皮肤的女性" << endl;
       }
};
//具体产品类——WhiteWoman类
class WhiteWoman : public Woman{
public:
       virtual void show(){
              cout << "白皮肤的女性" << endl;
       }
};
//抽象工厂类——AbstractFactory类
class AbstractFactory{
public:
       virtual Man* produceMan() = 0;
       virtual Woman* produceWoman() = 0;
};
//具体工厂类——YellowFactory类
class YellowFactory : public AbstractFactory{
public:
       virtual Man* produceMan(){
              return new YellowMan();
       }
       virtual Woman* produceWoman(){
                     return new YellowWoman();
       }
};
//具体工厂类——BlackFactory类
class BlackFactory : public AbstractFactory{
public:
       virtual Man* produceMan(){
              return new BlackMan();
       }
       virtual Woman* produceWoman(){
                     return new BlackWoman();
       }
};
//具体工厂类——WhiteFactory类
class WhiteFactory : public AbstractFactory{
public:
       virtual Man* produceMan(){
              return new WhiteMan();
       }
       virtual Woman* produceWoman(){
                     return new WhiteWoman();
       }
};
//测试类——test类
void test(){
       //黄皮肤工厂
       AbstractFactory* factory = NULL;
       factory = new YellowFactory;
       Man* man = factory->produceMan();
       man->show();
       delete man;
       man = NULL;

       Woman* woman = factory->produceWoman();
       woman->show();
       delete woman;
       woman = NULL;
       delete factory;
       factory = NULL;
       cout<<"*************************"<<endl;

       //黑皮肤工厂
       factory = new BlackFactory;
       man = factory->produceMan();
       man->show();
       delete man;
       man = NULL;

       woman = factory->produceWoman();
       woman->show();
       delete woman;
       woman = NULL;
       delete factory;
       factory = NULL;
       cout<<"*************************"<<endl;

       //白皮肤工厂
       factory = new WhiteFactory;
       man = factory->produceMan();
       man->show();
       delete man;
       man = NULL;

       woman = factory->produceWoman();
       woman->show();
       delete woman;
       woman = NULL;
       delete factory;
       factory = NULL;
}
int main(){
       test();
       return 0;
}

 

 

 

标签:delete,woman,show,factory,C++,工厂,抽象,NULL,man
From: https://www.cnblogs.com/rongzhang/p/16773862.html

相关文章

  • 建造者模式C++
    [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机......
  • 原型模式C++
    [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。#include<iostre......
  • Java封装、继承、多态、抽象、接口基础知识
    Java封装、继承、多态、抽象、接口基础知识封装面向对象三大特性:封装、继承、多态(四大特性则多一个抽象)定义把对象的属性和方法结合为一个独立的整体,并尽可能隐藏对......
  • 面试官:工厂方法模式是什么?
    真正的大师永远怀着一颗学徒的心吃不了学习的苦就要吃生活的苦文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目......
  • C++入门到理解set/multiset容器、pair对组
    一:基本概念在插入元素的时候会自动排好序,比如插入的是1,3,4,2,打印是1,2,3,4.底层是通过二叉树结构实现的,set容器不允许有重复的元素,但是multiset允许有元素重复。二:构造,遍历,赋值#i......
  • c++模版
    1.什么是模版?生活中比如常用的ppt模版,年终报告模版等,共有的特性通用性、不能直接使用、不是万能的2.c++中的模版c++处理面向对象编程思想还有面向泛型编程,面向泛型编程主要......
  • c++面向对象概述、内存分析、引用、函数
    1.c++内存分区模型c++程序在运行的过程中,内存会被划分为以下四个分区代码区:程序的所有程序的二进制代码,包括注释会被放到此区全局区:存放静态变量、全局变量、常量(字符串常量......
  • C++函数
    目录​​函数作用​​​​函数定义​​​​函数声明​​​​函数调用​​​​函数值传递​​​​函数常见的样式​​​​函数的分文件书写​​函数作用将经常使用的代码封装......
  • C++数据类型
    目录 ​​1.数据类型概述​​​​2.基本的内置类型​​​​整型​​​​实型(浮点型)​​​​字符型​​​​转义字符​​​​字符串型​​​​c风格的字符串​​​​c++风......
  • C++数组
    概述C++支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个......