【设计模式学习】抽象工厂模式

本文介绍了抽象工厂模式,作为工厂方法模式的扩展,它允许创建一系列相关或依赖的对象,而无需指定具体类。文章通过C++代码示例阐述了抽象工厂模式的结构,并分析了其优点如隔离具体类的生成、实现高内聚低耦合,以及在跨平台应用中的重要性。同时,指出增加新产品等级时可能违反开闭原则,是其主要缺点。最后,列举了Java AWT包和桌面主题更换等实际应用场景。
摘要由CSDN通过智能技术生成

cpp学习抽象工厂模式;


在学习抽象工厂模式之前,先来回忆一下上一节学习的工厂方法模式;

工厂方法模式,采用多态分离的方法,将简单工厂模式的工厂类解放为多个具体的子工厂, 从而继承简单工厂模式的优点,解决简单工厂模式的缺点;

工厂方法模式的缺点:在增加一个新产品的时候,需要增加一个产品类和一个具体的 子工厂,给系统带来额外的开销;同时,每个工厂生产一种产品,太过单一;

抽象工厂模式,其实相对于工厂方法模式来说,就多了一点东西,所谓多的一点东西就是将同一品牌的产品都交给同一个工厂去生产。解决工厂方法模式的单一性;否则,如果每一个产品都需要一个工厂去生产的话,会需要非常多的子工厂类,造成类泛滥;

同一品牌的产品交给同一个工厂来生产的意思就是:比如所,现在生产的需要不仅仅是单一的Hair电视机,还要有Hair空调,Hair冰箱等,这些同一品牌的产品都交给HairFactory来生产,而这些属于同一品牌的产品有一个专业名词:一个产品族;

同时,同一类产品需要有一个共同的抽象基类,来提供共有的方法,比如:Hair空调,TCL空调,它们的父类都是Base空调类;这样的同一类产品也有一个专业名词的归属:一个产品等级;

下面简单画个图来理解一下族和等级的具体含义:

这里写图片描述


抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式;

重点内容模式结构:
抽象工厂,具体工厂,抽象产品,具体产品;

其实在这几种模式一步一步学过来,你会发现每一种模式都是在上一层模式的基础上进行了一些扩展,进而成为一种新的模式;

下面我用C++模拟一下抽象工厂模式,同样的一个问题还是没有解决,那就是Java的反射机制还没有找到合适的替代方案;

code:

#include<iostream>

using namespace std;

class TV
{
public:
    //纯虚函数,抽象基类,公共方法;
    vir
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值