【C++设计模式】用简单工厂模式实现按汽车重量输出汽车类型

2023年8月24日,周四凌晨


cpp 复制代码
#include<iostream>

class CarType{
public:
	virtual std::string getType()=0;
};

class MiniCar:public CarType{
public:
	std::string getType() override{
		return "小型车";
	};
};

class MidSizeCar:public CarType{
public:
	std::string getType() override{
		return "中型车";
	};
};

class HeavyCar:public CarType{
public:
	std::string getType() override{
		return "重型车";
	};
};

class CarTypeFactory{
public:
	CarType* createCarType(int weight){
		
		if(weight<5){
			return new MiniCar();
		}else if(weight<10){
			return new MidSizeCar();
		}else{
			return new HeavyCar();
		}
		
		return nullptr;
	}
};


int main(){
	int weight;
	CarType *carType;
	CarTypeFactory *factory=new CarTypeFactory();
	
	while(1){
		std::cout<<"请输入汽车的重量(吨):";
		std::cin>>weight;
			
		carType=factory->createCarType(weight);
		std::cout<<carType->getType()<<std::endl;
	}
	
}
相关推荐
程序猿本员26 分钟前
线程池精华
c++·后端
秋田君35 分钟前
深入理解JavaScript设计模式之闭包与高阶函数
开发语言·javascript·设计模式
靡樊41 分钟前
Socket编程UDP\TCP
网络·c++·学习·tcp/ip·udp
byte轻骑兵1 小时前
【C++高级主题】命令空间(五):类、命名空间和作用域
开发语言·c++
忘梓.2 小时前
从二叉树到 STL:揭开 set 容器的本质与用法
开发语言·c++
Alan3162 小时前
qt network 整体框架
c++
何中应2 小时前
【设计模式-4.11】行为型——解释器模式
java·设计模式·解释器模式
byte轻骑兵3 小时前
【C++高级主题】虚基类的声明
开发语言·c++
落羽的落羽3 小时前
【C++】二叉搜索树
开发语言·数据结构·c++·学习
胡译胡说3 小时前
C语言的”代码化石“出土:1979年的英文文本判别器
c++·unix