首页 > 其他分享 >工厂模式

工厂模式

时间:2023-05-09 09:34:54浏览次数:24  
标签:ExportFileApi 模式 class protected exportData new 工厂 public

 

#include <iostream>
#include <string>
using namespace std;
class ExportFileApi {
public:
    virtual bool exportData(string data) = 0;
protected:
    ExportFileApi(){}
};

//具体化的子类
class ExportTxtFile : public ExportFileApi {
public:
    bool exportData(string data) {
        cout << "正在导出数据" << data << "到csv文件" << endl;
        return true;
    }
};

//生成数据到数据库
class ExportDB :public ExportFileApi {
public:
    bool exportData(string data) {
        cout << "正在导出数据" << data << "到数据库" << endl;
        return true;
    }
};

//实现一个ExportOperate,这个叫导出数据的业务功能对象
class ExportOperate {//他也是接口
public:
    bool exportData(string data) {
        ExportFileApi* pApi = factoryMethod();
        return pApi->exportData(data);
    }
protected:
    virtual ExportFileApi* factoryMethod() = 0;
};

//具体的实现对象,完成导出工作
class ExportTxtFileOperate : public ExportOperate {
protected:
    ExportFileApi* factoryMethod() {
        return new ExportTxtFile();
    }
};

class ExportDBOperate :public ExportOperate {
protected:
    ExportFileApi* factoryMethod() {
        return new ExportDB;
    }
};

int main() {
    ExportOperate* pOperate = new ExportTxtFileOperate();
    pOperate->exportData("Haha");
    system("pause");
    return 0;
}
简单的实现方法

 

标签:ExportFileApi,模式,class,protected,exportData,new,工厂,public
From: https://www.cnblogs.com/zeliangzhang/p/17383841.html

相关文章

  • Hadoop的运行模式
    Hadoop官方网站http://hadoop.apache.org/Hadoop运行模式本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。伪分布式模式:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。完全分布式模式:多......
  • Python设计模式面试题
    单例模式1请手写一个单例#encoding=utf8importthreadingimporttime#这里使用方法__new__来实现单例模式classSingleton(object):#抽象单例def__new__(cls,*args,**kw):ifnothasattr(cls,'_instance'):orig=super(Singleton,cls)......
  • 2023.5.8 单例设计模式
     单例设计模式单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接......
  • 2023.5.8 设计模式简介
    1,设计模式概述1.1软件设计模式的产生背景"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(ChristopherAlexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述......
  • 第六节:受控 、高阶组件、portals、fragment、严格模式、动画
    一.受控组件       二.高阶组件       三.portals      四.fragment        五.严格模式        六.动画         !作       者:Yaopengfei(姚鹏飞)博客地......
  • 抽象工厂代码示例
    抽象工厂代码示例为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。产品族需要扩展的不适合抽象工厂,即在抽象工厂中在加一个createXXX();publicclassAbstractFactory{publicstaticvoidmain(String[]args){ComputerFactoryfactory......
  • Linux基础19 Gdisk, 挂载命令mount与配置文件, fstab文件的详细信息, Swap介绍与案例,
    gdiskgdisk分区,分区表是GPT,支持更大的容量分区。128个。#需要安装[root@oldboy~]#yuminstall-ygdisk 1.添加硬盘,3TB在vmware里面添加2.查看是否能识别出来。[root@oldboy~]#lsblkNAMEMAJ:MINRMSIZEROTYPEMOUNTPOINTsda8:0050G0disk......
  • Vmware网络模式
    Vmware配置外网配置网卡为Net模式Net网段192.168.200.0,255.255.255.0,网关192.168.200.2,本机192.168.200.1,Dhcp为3-254vim/etc/sysconfig/network-scripts/ifcfg-eth0IPADDR=192.168.200.10GATEWAY=192.168.200.254NETMASK=255.255.255.0DNS1=192.168.200.2DNS1或/......
  • Tesseract 图片分割模式
    Pagesegmentationmodes:0=Orientationandscriptdetection(OSD)only.1=AutomaticpagesegmentationwithOSD.2=Automaticpagesegmentation,butnoOSD,orOCR3=Fullyautomaticpagesegmentation,butnoOSD.(Default)4=Assumeasinglecolum......
  • 单例模式-C#
    //Seehttps://aka.ms/new-console-templateformoreinformation//Console.WriteLine("Hello,World!");classSingleCase{publicstaticSingleCaseinstance=null;publicstringname="";publicstaticSingleCasegetInstance(string......