使用C++写抽象工厂模式涉及到的一些问题
来源:互联网 发布:剑网三捏脸数据是视频 编辑:程序博客网 时间:2024/05/29 12:42
代码是摘自《C++高级编程第二版》
具体类图如下:
代码如下:
汽车类:
#include <iostream>class Car{public:virtual void info() = 0;};class Ford : public Car{public:virtual void info() { std::cout<< "Ford" << std::endl; }};class Toyota : public Car{public:virtual void info() { std::cout<< "Ford" << std::endl; }};汽车工厂类:
#include "Car.h"class CarFactory{public:CarFactory();Car* requestCar();int getNumCarsInProduction() const;protected:virtual Car* createCar() = 0;private:int mNumCarsInProduction;};class FordFactory : public CarFactory{protected:virtual Car* createCar();};class ToyotaFactory : public CarFactory{protected:virtual Car* createCar();};汽车工厂类中成员的具体定义:
#include "CarFactory.h"CarFactory::CarFactory() : mNumCarsInProduction(0) {}Car* CarFactory::requestCar(){mNumCarsInProduction++;return createCar();}int CarFactory::getNumCarsInProduction() const{return mNumCarsInProduction;}Car* FordFactory::createCar(){return new Ford();}Car* ToyotaFactory::createCar(){return new Toyota();}
C++ Primer 4 中提到派生类中虚函数的声明必须和基类中的定义方式完全匹配,但有一个例外:返回对基类型的引用或指针的虚函数,派生类中的虚函数可以返回基类函数所返回类型的派生类的引用或指针。说的就是CarFactory中的Car* createCar()函数成员,在派生类FordFactory和ToyotaFactory中的createCar中,返回的是各自类型的车对象的指针。
0 0
- 使用C++写抽象工厂模式涉及到的一些问题
- C#写的工厂抽象模式
- 写存储过程中涉及到一些游标的问题
- 如何使用反射和抽象工厂模式来写JDBC
- 抽象工厂模式,BLL层如何使用工厂的代码?
- 【C++】Chapter11:抽象工厂模式
- Objective C--抽象工厂模式
- Objective C 抽象工厂模式
- 抽象工厂模式(C#)
- Objective C--抽象工厂模式
- 静态工厂模式&工厂模式&抽象工厂模式&解决的问题
- ASP.NET:就抽象工厂模式的一些说明…
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- 【怎样写代码】工厂三兄弟之抽象工厂模式(一):问题案例
- unity使用抽象工厂模式
- 抽象工厂模式简单使用
- 构建者模式和抽象工厂模式的结合使用
- 抽象工厂模式第三步-使用抽象工厂模式
- Android4.4电源管理——呼吸灯
- 微信公众平台教程--素材编辑
- jquery获取父元素子元素同级元素
- 使用PreparedStatement访问数据库
- 我的第八课:错误总结
- 使用C++写抽象工厂模式涉及到的一些问题
- WARNING: Subscription for node down event still pending
- 播放器的制作
- 【转】协调器启动网络(一)
- HTTP协议之multipart/form-data请求分析
- JAVA基础之内部类详解
- hdu 4183 Pahom on Water(最大流)
- 的封锁石凳丰盛的放松放松的
- tnsnames.ora中,server = shared()server = dedicated的区别?