当前位置:网站首页>工厂方法模式
工厂方法模式
2022-08-02 12:33:00 【l_ethan】
简介:工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不在负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现’开-闭‘原则,实现了可拓展。

优点:
1.不需要记住具体类名
2.实现了对象创建和使用的分离
3.系统的可扩展性也就变地非常好无需修改接口和原类。
缺点:
1.增加系统中类的个数,复杂度和理解度增加
2.增加了系统的抽象性和理解难度
案例:
#include <iostream>
using namespace std;
class AbstractFruit {
public:
virtual void show() = 0;
};
class Apple :public AbstractFruit {
public:
virtual void show() {
cout << "apple" << endl;
}
};
class Banana :public AbstractFruit {
public:
virtual void show() {
cout << "banana" << endl;
}
};
class AbstractFruitFactor {
public:
virtual AbstractFruit* createfruit()=0;
};
class AppleFactor :public AbstractFruitFactor {
public:
virtual AbstractFruit* createfruit() {
return new Apple;
}
};
class BananaFactor :public AbstractFruitFactor {
public:
virtual AbstractFruit* createfruit() {
return new Banana;
}
};
int main()
{
AbstractFruitFactor* af = nullptr;
AbstractFruit* f = nullptr;
af = new AppleFactor;
f = af->createfruit();
f->show();
delete af;
delete f;
return 0;
}
边栏推荐
- Custom mvc framework review
- Transfer files between servers
- Chapter 14 Manually create a REST service (2)
- FreeRTOS--栈实验
- ssm访问数据库数据报错
- Intelligent Image Analysis-Intelligent Home Appliance Image Target Detection Statistical Counting Detection and Recognition-iCREDIT
- 手撸架构,网络 面试36问
- liunx基础命令讲解
- Process finished with exit code 1
- Likou 35 - search for insertion position - binary search
猜你喜欢
随机推荐
Good shooting js game source code
Seneor Exposure Basics
30行代码实现无服务器实时健康码识别--操作手册
Chapter 14 Manually create a REST service (2)
Swiper系列之轮播图
Object.entries()
智能图像分析-智能家用电器图像目标检测统计计数检测与识别-艾科瑞特科技(iCREDIT)
Likou 209 - String with the Minimum Length - Sliding Window Method
Manual architecture, Mysql interview 126 questions
js true 3d histogram plugin
Js scratchable latex style draw plug-in
SQL Server2019安装步骤及脱机安装Microsoft机器学习组件下一步不能继续的问题
主流跨端技术一览
svg实现的树木四季变化
Process finished with exit code 1
Drools(8): WorkBench uses
消除气泡解救蘑菇h5小游戏源码
1.3 Rapid Spanning Tree Protocol RSTP
There are several ways to jump to js source code, jump on the current page, jump on the blank page
SQL Server如何建表









