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

简单工厂模式

时间:2023-04-26 18:47:16浏览次数:35  
标签:implTwo string factory 模式 工厂 Api 简单 test public

一、第一种方法

//实现了客户端调用和implOne,implTwo的解耦合
//factory类实现了变化隔离

 1 #include<string>
 2 #include "DynOBJ.h"
 3 using namespace std;
 4 
 5 class Api {
 6 public:
 7     virtual void test(string s) = 0;
 8 protected:
 9     Api(){}
10 };
11 
12 
13 class ImpleOne :public Api {
14 public:
15     void test(string s) {
16         cout << "现在是One在执行" << s;
17     }
18 };
19 
20 class ImpleTwo :public Api {
21 public:
22     void test(string s) {
23         cout << "现在是Two在执行" << s;
24     }
25 };
26 
27 class Factory {
28 public:
29     static Api* createApi(int type) {
30 
31         Api* pApi = nullptr;
32         if (type == 1) {
33             pApi = new ImpleOne();
34         }
35         if (type == 2) {
36             pApi = new ImpleTwo();
37         }
38         return pApi;
39     }
40 
41     static Api* createApi() {
42         return new ImpleOne();
43     }
44 };
45 
46 
47 /**
48 传入参数1,可以实现从数据库读入的功能
49 传入参数2,可以实现从文本文件读入的功能
50 */
51 int main(void) {
52     Api* pApi = Factory::createApi(2);//客户端,还是知道工厂的细节
53 
54     pApi->test("--现在是使用简单工厂方法重构\r\n");
55     Api* pApiEx = Factory::createApi();
56     system("pause");
57     return 0;
58 }
59 //实现了客户端调用和implOne,implTwo的解耦合
60 //factory类实现了变化隔离
View Code

 

标签:implTwo,string,factory,模式,工厂,Api,简单,test,public
From: https://www.cnblogs.com/zeliangzhang/p/17356959.html

相关文章

  • CVPR'23|向CLIP学习预训练跨模态!简单高效的零样本参考图像分割方法
    前言 本文提出了一种zero-shot的Referringimagesegmentation方法,该方法利用了来自CLIP的pre-train的跨模态知识。所提方法的性能明显优于所有基线方法和监督较弱的方法。本文转载自极市平台作者|CV开发者都爱看的仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南......
  • 设计模式(18)-Command Pattern
    一、 命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。......
  • Volar Takeover 模式是什么
    当我们用vite创建一个使用TypeScript的vue3项目时,用VSCode打开Workspace时,有时会发现tsconfig.json、vite.config.ts文件内会报引用错误,这就是Volar插件(TypeScriptVuePlugin(Volar))导致的问题,由于Volar插件另外启用了一个TS语言服务实例,用于vue单文件组件和TypeScript一起工......
  • 低代码应用开发平台,让数据管理更简单!
    在数据管理越来越规范化的今天,低代码应用开发平台也获得了进步和发展的机会和空间。想要将企业内部的数据资源做好系统管理,从而为各个时期的经营决策提供强有力的证据和基础,低代码应用开发平台就是其中备受喜爱的工具。本文主要从它的特点、优势等多个方面让大家了解低代码应用开......
  • 网络安全之文件包含漏洞就是这么简单
    前言文件包含漏洞属于代码注入漏洞,为了减少重复代码的编写,引入了文件包含函数,通过文件包含函数将文件包含进来,直接使用包含文件的代码;简单来说就是一个文件里面包含另外一个或多个文件。但我们除了包含常规的代码文件外,包含的任意后缀文件都会被当作代码执行,因此,如果有允许用户控制......
  • 设计模式
    总体设计模式分为三大类:创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共7种:代理模式、桥接模式、适配器模式、装饰器模式、外观模式、享元模式、组合模式。行为型模式,共11种:观察者模式、策略模式、模板方法模式、迭代子模式、责任链......
  • MFC-GetBkMode获取指定DC的背景混合模式
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;//字符集lstrcpy(lf.lfFaceName,_T("宋体"));HFONThfont=::CreateFontIndirect(&lf)......
  • MFC-SetBkMode设置指定DC的背景混合模式
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;//字符集lstrcpy(lf.lfFaceName,_T("宋体"));HFONThfont=::CreateFontIndirect(&lf)......
  • Nodejs中流的操作,实现简单的pipe
    fs与流都可以处理文件,为什么还要用流?fs模块处理文件的缺点:将文件的数据全读到内存中,在把数据写到文件内,会大量占用内存。流介绍:      流(stream)是Node.js中处理流式数据的抽象接口,是一组有序的,有起点和终点的字节数据传输手段。可以实现将数据从一个地方流动到另一个......
  • rabbitMQ镜像模式搭建
    一、环境 配置hosts解析192.168.1.135rabbit-master01192.168.1.136rabbit-master02192.168.1.137rabbit-master03关闭防火墙或者配置相关端口二、安装yum源及rabbitmq在所有机器上curl-shttps://packagecloud.io/install/repositories/rabbitmq/erlang/script.r......