抽象工厂模式 - Abstract Factory

本文介绍了一种设计模式——抽象工厂模式,它提供了一个创建一系列相关或相互依赖对象的接口,无需指定具体类。通过学校制造不同年级书籍的例子,展示了如何通过扩展工厂类实现对新需求的支持,同时保持代码的整洁和可维护性。

定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

举例:
学校里需要制造一年级的语文书、数学书,二年级的语文书、数学书。

类图
类图
客户端

#include "FactoryGrade1.h"
#include "FactoryGrade2.h"

int main(int argc, char* argv[])
{
	//Factory *factory = new FactoryGrade1();   // 制造一年级的书
	Factory *factory = new FactoryGrade2();     // 制造二年级的书

	Book *chinese = factory->CreateChineseBook();
	Book *math = factory->CreateMathBook();

	chinese->show();
	math->show();

	getchar();   // 暂停,查看输出结果
	return 0;
}

日后如果客户端需要修改为使用其他年级的书籍,只需扩展一个对应年级工厂类,及相应的书籍类,将客户端中的工厂更新为三年级工厂即可,其他无需改动。做到了对扩展开放,对修改封闭。

源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值