面试:C++工厂模式实现

 1 #include <iostream>
 2
 3 enum CTYPE {PRODUCTA,PRODUCTB};
 4 class Product{
 5 public:
 6     virtual void func() = 0;
 7     virtual ~Product(){};
 8 };
 9
10 class ProductA : public Product{
11 public:
12     void func(){
13         std::cout << "create ProductA..." << std::endl;
14     }
15 };
16
17 class ProductB : public Product{
18 public:
19     void func(){
20         std::cout << "create ProductB..." << std::endl;
21     }
22 };
23
24 class Factory{
25 public:
26     static Product* createProduct(enum CTYPE ctype){
27         if(ctype == PRODUCTA)
28             return new ProductA;
29         else if(ctype == PRODUCTB){
30             return new ProductB;
31         }else
32             return nullptr;
33     }
34 };
35
36 int main(){
37     Product* p = Factory::createProduct(CTYPE::PRODUCTA);
38     p->func();
39     return 0;
40 }
时间: 2024-11-17 14:37:07

面试:C++工厂模式实现的相关文章

设计模式之abstract factory工厂模式的理解

研究了一下工厂模式,对它的应用场景和网上的众多说法进行了思考,总结如下. 几个疑问点: 1.网上说用factory,就可以不用自己new了,但是疑问在于,不直接依赖,转而间接依赖,作用是什么?节省了代码量?易于扩展? 2.书上说,一个系统要独立于它的产品的创建.组合和表示时.一个系统要由多个产品系列中的一个来配置时.当你要强调一系列相关的产品对象的设计以便进行联合使用时.当你提供一个产品类库,而只想显示它们的接口而不是实现时,就应该使用工厂模式.但是疑问在于,这他妈说的都是啥? 于是开始了我的思

1.python实现设计模式:简单工厂模式

简单工厂模式 1.什么是简单工厂模式? 给定一种输入,通过工厂实例出其合适的对象,称为简单工厂模式 2.逐步引入工厂模式 2.1 小文去面试,公司要求用任意一种面对对象的语言实现了一个计算器程序,功能只是简单的两个数相加或者减,乘,除 他的代码如下 def main(): num1 = int(input('The first number is:')) num2 = int(input('The second number is:')) op = input('The operator is(

从接口、抽象类到工厂模式再到JVM来总结一些问题

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口? 接口和抽象类的区别 简单工厂模式总结 Java中new和newInstance的区别 Java的Class.forName(xxx); Java里创建对象的几个方式总结 Java类加载机制总结 Java WEB的三层架构和MVC的关系 工厂方法模式总结 抽象工厂模式总结 一道面试题的分析 一个服务提供者框架的学习 接口的另一常用法:策略模式 参考资料 先看这样一个场景:某个果园里现在有

【Unity与23种设计模式】抽象工厂模式(Abstract Factory)

GoF中定义: "提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类." 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例子为工厂1和工厂2 两个工厂都可以生成产品A和B 但是两个工厂工艺不同 所以工厂1只能生产产品A1和B1 工厂2只能生产产品A2和B2 //可生成各抽象成品对象的操作 public abstract class AbstractFactory{ public abstract AbstractProductA

Android设计模式--简单工厂模式

1.面试的时候问到这样的问题: 在一个ListView 的item子视图中,很多种不同的显示样式,或者说是,为了更好的维护,或者以后需要添加不同的样式,应该怎么做? 我一下就想到的是工厂的模式,利用工程,编写ViewFactory,方法中有getView()的方法,以后需要时,添加相应的参数,并编写不同的实现类,也就是不同样式的视图: 但是这样的答案,似乎没有让面试官满意: 他的意思是,书写不同的Adapter ,通过适配器中的getView()获取不同的View,即:一个样式的视图,对应一个A

群“模”乱舞之简单工厂模式

感受设计演变过程中所蕴含的大智慧,体会乐与怒的程序人生中值得回味的一幕幕.--<大话设计模式> 能把计算机编程类的书写成小说一样的效果,是这本书的最大亮点,也是我最为敬佩的地方.拿到书之后,爱不释手,用了23个番茄将书完整的通读了一遍,在读书的过程中时而凝眉沉思,不得其解,时而拍腿称快,大呼妙哉!虽然很多的地方还是不太明白,但是思维已经随着问题在程序世界里徘徊. 书的第一章直接抛给读者一个问题:代码无措就是优?通常有过编程基础的人都会给出否定的答案,但是对于这个问题的理解显然是不够深刻,因此下

设计模式之工厂模式(iOS开发,代码用Objective-C展示)

<大话设计模式>这是一本经典之作,本来我该看<Objective-C编程之道:IOS设计模式解析 >,其实我也是先看的<Objective-C编程之道:IOS设计模式解析 >,但不得不说,其中内容有些深奥,理解起来比较困难.这与我一贯的学习方针不合,我更喜欢一个循序渐进的过程,从认知到实践再到思维上的一个比较深入的学习.然后有朋友向我推荐了<大话设计模式>这本书籍,初看,感觉很是符合我现在这个阶段,在此以前,我所编码中接触的设计模式都是比较简单的,在代码上也

深入理解工厂模式

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide 历史回顾: 深入理解单例模式 历史文章推荐: 分布式系统的经典基础理论 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机(jvm)的问题看这篇就够了 [TOC] 一 工厂模式介绍 1.1 工厂模式的定义 先来看一下GOF为工厂模式的定义: "Define an interface for creating an

对比总结三个工厂模式(简单工厂,工厂方法,抽象工厂)

前言 简单工厂模式,工厂方法模式,抽象工厂模式,这三个模式,当然还有单例模式,建造者模式等等,应该是日常工作中常用的,尤其是工厂模式,应该是最最常见的模式,对理解面向对象有重要的实际意义. 简单工厂模式 最简单,最直接,能满足大部分日常需求,不足是工厂类太简单——无法满足开闭原则,对多个产品的扩展不利 工厂方法模式——交给子类去创建 工厂方法模式,有了进步,把工厂类进行改进,提升为一个抽象类(接口),把对具体产品的实现交给对应的具体的子类去做,解耦多个产品之间的业务逻辑. 前面都是针对一个产品族

设计模式入门-简单工厂模式

前言 话说设计模式是我们面试中经常遇到的问题,但是开发中遇到的也不少.之前一直想学设计模式,然后总结写一些文章,但一直忙于其它事情,现在终于要学习设计模式,参考的书籍是<大话设计模式>,这本书写得通俗易懂,推荐大家都去看一下. 场景描述 借用书中示例问题,计算两个数的加.减.乘.除等其它运算,一般我们的思维是自上而下处理问题,也就造成了运算两个数就要经过多次判断. 场景示例 两个数之前的算法运算,如下面代码所示: package me.xueyao; /** * @author Simon.X