AbstractFactory抽象工厂模式
#include <iostream>
using namespace std;
class ProductAbase
{
public:
ProductAbase(){}
virtual ~ProductAbase(){}
virtual void Printf() = 0;
};
class Product1 : public ProductAbase
{
public:
void Printf()
{
cout << "Product1::Printf()" << endl;
}
};
class Product2 :public ProductAbase
{
public:
void Printf()
{
cout << "Product2::Printf()" << endl;
}
};
class ProductBbase
{
public:
virtual void Printf() = 0;
};
class Product3 : public ProductBbase
{
public:
void Printf()
{
cout << "Product3::Printf()" << endl;
}
};
class Product4 : public ProductBbase
{
public:
void Printf()
{
cout << "Product4::Printf()" << endl;
}
};
//工厂类。
class Factory
{
public:
Factory(){}
virtual ~Factory(){}
virtual ProductAbase* GetProductA() = 0;
virtual ProductBbase* GetProductB() = 0;
};
class Factory1 : public Factory
{
public:
ProductAbase* GetProductA()
{
return new Product1();
}
ProductBbase* GetProductB()
{
return new Product3();
}
};
class Factory2 : public Factory
{
public:
ProductAbase* GetProductA()
{
return new Product2();
}
ProductBbase* GetProductB()
{
return new Product4();
}
};
int main()
{
Factory *fa = new Factory1();
ProductAbase *pa = fa->GetProductA();//获得ProdcutAbase的子类对象Product1。
pa->Printf();//Product1的操作方法。
ProductBbase *pb = fa->GetProductB();//获得ProductBbase的子类对象Product3。
pb->Printf();//Product3的操作方法。
fa = new Factory2();
pa = fa->GetProductA();
pa->Printf();//Product2的操作方法。
pb = fa->GetProductB();
pb->Printf();//Product3的操作方法。
return 0;
}
//总结:抽象工厂模式无非是将单个工厂模式聚合起来,统一的用工厂函数对对象的实例化延迟。
//然后统一的对对象的构造进行管理。说的简单点就是,我将宝马停在1号车间。奔驰停在2号车间,
//奥迪停在3号车间,我须要什么车我就开几号车间门,工厂函数就是起这样一个作用,将对象的
//实例化用统一的函数进行封装。
AbstractFactory抽象工厂模式的更多相关文章
- 桥接模式及C++实现 C++设计模式-AbstractFactory抽象工厂模式
桥接模式及C++实现 桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一 ...
- AbstractFactory(抽象工厂模式)
AbstractFactory(抽象工厂模式) 有些情况下我们需要根据不同的选择逻辑提供不同的构造工厂,而对于多个工厂而言需要一个统一的抽象 <?php class Config { publi ...
- 设计模式(4)--AbstractFactory(抽象工厂模式)--创建型
1.模式定义: 抽象工厂是应对产品族概念的,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类 2.模式特点: 抽象工厂模式为创建一组对象提供了一种解决方案.与工厂方法模式相比,抽象工 ...
- 八、AbstractFactory 抽象工厂模式
设计原理: 代码清单: 抽象 Factory : public abstract class Factory { public static Factory getFactory(String cla ...
- C++设计模式-AbstractFactory抽象工厂模式
AbstractFactory 要创建一组相关或者相互依赖的对象 作用:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. UML结构图: 抽象基类: 1)AbstractProdu ...
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.对于工厂方法来说,抽象工厂可实现一系列产品的生产,抽象工厂更注重产品的组合. 看代码: 7.1.解释 main(),女 ...
- FactoryMethod工厂方法模式升级成AbstractFactory抽象工厂模式
具体参考抽象工厂(AbstractFactory)模式-创建型模式,本文在FactoryMethod工厂方法模式(创建型模式)的基础上进行业务进一步抽象,不做详细原理介绍. 1.在FactoryMet ...
- AbstractFactory抽象工厂模式(创建型模式)
1.new 的问题 常见的对象创建方法: //创建一个Road对象 Road road=new Road(); new的问题:实现依赖,不能应对具体实例的变化 怎么理解上面这句话呢? 可以这样理解:我 ...
- php 23种设计模型 - 抽象工厂模式
抽象工厂模式(AbstractFactory) 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创 ...
随机推荐
- 【APP问题定位(三)】adb安装
先来剧透一下我们需要使用的工具 bin包 一个安装目录,可以免安装直接调用adb命令 Android SDK platform tools 下面依次为大家介绍,第1个和第2 ...
- Hibernate框架学习之注解映射实体类
前面的相关文章中,我们已经介绍了使用XML配置文件映射实体类及其各种类型的属性的相关知识.然而不论是时代的潮流还是臃肿繁杂的配置代码告诉我们,注解配置才是更人性化的设计,于是学习了基本的映射 ...
- MyEclipse和Eclipse非常方便的快捷键
1. ctrl+shift+r:打开资源这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml ...
- maven项目打包运行出错问题汇总
maven项目打包时总会出现莫名其妙的错误,现总结一下. 打包方式:在maven项目底下运行cmd,输入mvn clean package,会自动按pom.xml的配置打成包.使用java -jar ...
- 激光相机数据融合(4)--KITTI数据集中matlab接口说明及扩展
KITTI数据集接口已经提供了matlab接口,本篇将说明详细说明其应用并与PCL进行对接.PCL为C++点云处理语言库,详情可见:http://pointclouds.org/ 程序可以从官网下载, ...
- 根据自己的博客数据统计国内IT人群
装上百度统计有一段时间了,今天突然找出报表看看,发现一个很有意思的事情.访问来源TOP5依次是:北京,上海,深圳,杭州,广州 虽然大部分文章都是当时特别白的时候记录下来的遇到过的问题,但受众确实应该只 ...
- 学python3的书
<Python Cookbook>3rd Edition http://python3-cookbook.readthedocs.io/zh_CN/latest/copyright.htm ...
- eclipse自定义代码模板
eclipse自定义代码模板 Eclipse 提供了非常多的代码模板,我们可以通过 Windows->Preferences->Java->Editor->Templates ...
- window.location.href跳转至空白页
现象:window.location.href = "XXX"调到了空白页,但是将XXX在窗口地址栏输入就会可以访问到. 原因:就是XXX前缀没有加上"http://&q ...
- 解决微信公众平台IP白名单
微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱.正如它的广告词所说:再小的个体,也有品牌 好吧,闲话不多说,今天要说的是它的IP白名单机制. 我们现在安装的大部分的电信的家庭级别的 ...