#ifndef __ABSTRACT_FACTORY_MODEL__
#define __ABSTRACT_FACTORY_MODEL__#include <string>
#include <vector>
#include <iostream>
using namespace std;
/*
GOOD:定义了一个创建一系列相关或相互依赖的接口,而无需指定它们的具体类。
用于交换产品系列,如ACCESS->SQL SERVER;
产品的具体类名被具体工厂的实现分离
*///用户抽象接口
class IUser
{
public:virtual void getUser() = 0;virtual void insertUser() = 0;
};//部门抽象接口
class IDepartment
{
public:virtual void getDepartment() = 0;virtual void insertDepartment() = 0;
};//ACCESS用户
class CAccessUser : public IUser
{
public:virtual void getUser(){ cout<<"Access GetUser"<<endl; }virtual void insertUser(){ cout<<"Access InsertUser"<<endl; }
};//ACCESS部门
class CAccessDepartment : public IDepartment
{
public:virtual void getDepartment(){ cout<<"Access GetDepartment"<<endl; }virtual void insertDepartment(){ cout<<"Access InsertDepartment"<<endl; }
};//SQL用户
class CSqlUser : public IUser
{
public:virtual void getUser(){ cout<<"Sql User"<<endl; }virtual void insertUser(){ cout<<"Sql User"<<endl; }
};//SQL部门类
class CSqlDepartment : public IDepartment
{
public:virtual void getDepartment(){ cout<<"Sql GetDepartment"<<endl; }virtual void insertDepartment(){ cout<<"Sql InsertDepartment"<<endl; }
};//抽象工厂
class IFactory
{
public:virtual IUser* createUser() = 0;virtual IDepartment* createDepartment() = 0;
};//ACCESS 工厂
class AccessFactory : public IFactory
{
public:virtual IUser* createUser(){ return new CAccessUser(); }virtual IDepartment* createDepartment(){ return new CAccessDepartment(); }
};//SQL 工厂
class SqlFactory : public IFactory
{
public:virtual IUser* createUser(){ return new CSqlUser(); }virtual IDepartment* createDepartment(){ return new CSqlDepartment(); }
};#endif //__ABSTRACT_FACTORY_MODEL__/*
#include "AbstractFactoryModel.h"
int _tmain(int argc, _TCHAR* argv[])
{IFactory* factory = new SqlFactory();IUser* user = factory->createUser();IDepartment* depart = factory->createDepartment();user->getUser();depart->getDepartment();return 0;
}
*/

转载于:https://www.cnblogs.com/MrGreen/p/3416944.html

设计模式 之 《抽象工厂模式》相关推荐

  1. 每天一个设计模式之组合模式

    作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...

  2. 1、【设计模式】组合模式

    java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...

  3. 详解设计模式:组合模式

    组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...

  4. 结构型设计模式之组合模式

    结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...

  5. java设计模式之组合模式(树形层级)

    java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...

  6. Java设计模式之组合模式详解

    文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...

  7. Java设计模式之组合模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  8. 设计模式之组合模式(Composite)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  9. 设计模式复习-组合模式

    #pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...

  10. Java 设计模式之组合模式

    一.了解组合模式 1.1 什么是组合模式 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次机构.组合能够使客户以一致的方式处理个别对象以及组合对象. 组合模式让我们能够用 ...

最新文章

  1. 分析Android :java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit
  2. 【Linux 内核】调度器 ⑤ ( put_prev_task、set_next_task 函数 | select_task_rq 函数 | migrate_task_rq 函数 )
  3. Hsiaoyang: Google与站点地图Sitemap
  4. pygame.mixer.Sound()语句提示错误:pygame.error: Unable to open file 'test.wav'
  5. 装箱与拆箱 c# 1613534570
  6. maven学习(1)
  7. == 与 equals 的区别
  8. Android Spinner设置默认选中的值
  9. [2018.03.29 T2] 公交旅行
  10. jquery easyui后台模板
  11. 2007年7月27日
  12. 虚拟机vmware中下载安装centos7
  13. 计算机课说话检查200字,上课说话检讨书200字(精选10篇)
  14. 十五、圣礼是蒙恩的凭藉
  15. TensorFlow 入门到进阶,如何快速学习?
  16. ReactJS Start/build内存溢出
  17. 神策-神策中的营销学
  18. W7系统如何增大C盘空间(动态磁盘)
  19. PHP通过微信网页授权获取用户基本信息
  20. java 运动的大球吃小球_JAVA 多线程制作大球吃小球 一、实现球的自动生成及运动 生产消费模型...

热门文章

  1. oracle存储过程的创建与调用,Oracle 存储过程创建及调用
  2. java如何对foo bar调用方法_关于java:如何测试工厂方法传递给构造函数的参数?...
  3. extjs实现组织架构图_如何画好一张架构图?(内含知识图谱)
  4. 定时任务的选型及改造
  5. 直播 | “深度学习”到底是什么?这篇文章讲明白了
  6. 阿里“AI搭配师”一秒给你100种穿搭建议,程序员进军女性时尚靠什么?
  7. 刻不容缓!联合国加开会议讨论「如何限制杀人机器人」
  8. xml配置javaBean的IOC实现示例
  9. ansible执行拷贝/脚本/任务计划/yum/service
  10. android apk 防止反编译技术加壳技术(转)