设计模式 之 《抽象工厂模式》
#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
设计模式 之 《抽象工厂模式》相关推荐
- 每天一个设计模式之组合模式
作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...
- 1、【设计模式】组合模式
java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...
- 详解设计模式:组合模式
组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...
- 结构型设计模式之组合模式
结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...
- java设计模式之组合模式(树形层级)
java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...
- Java设计模式之组合模式详解
文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...
- Java设计模式之组合模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- 设计模式之组合模式(Composite)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 设计模式复习-组合模式
#pragma once #include "stdafx.h" #include<set> #include<string> #include<io ...
- Java 设计模式之组合模式
一.了解组合模式 1.1 什么是组合模式 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次机构.组合能够使客户以一致的方式处理个别对象以及组合对象. 组合模式让我们能够用 ...
最新文章
- 分析Android :java.lang.UnsatisfiedLinkError: dlopen failed * is 32-bit instead of 64-bit
- 【Linux 内核】调度器 ⑤ ( put_prev_task、set_next_task 函数 | select_task_rq 函数 | migrate_task_rq 函数 )
- Hsiaoyang: Google与站点地图Sitemap
- pygame.mixer.Sound()语句提示错误:pygame.error: Unable to open file 'test.wav'
- 装箱与拆箱 c# 1613534570
- maven学习(1)
- == 与 equals 的区别
- Android Spinner设置默认选中的值
- [2018.03.29 T2] 公交旅行
- jquery easyui后台模板
- 2007年7月27日
- 虚拟机vmware中下载安装centos7
- 计算机课说话检查200字,上课说话检讨书200字(精选10篇)
- 十五、圣礼是蒙恩的凭藉
- TensorFlow 入门到进阶,如何快速学习?
- ReactJS Start/build内存溢出
- 神策-神策中的营销学
- W7系统如何增大C盘空间(动态磁盘)
- PHP通过微信网页授权获取用户基本信息
- java 运动的大球吃小球_JAVA 多线程制作大球吃小球 一、实现球的自动生成及运动 生产消费模型...
热门文章
- oracle存储过程的创建与调用,Oracle 存储过程创建及调用
- java如何对foo bar调用方法_关于java:如何测试工厂方法传递给构造函数的参数?...
- extjs实现组织架构图_如何画好一张架构图?(内含知识图谱)
- 定时任务的选型及改造
- 直播 | “深度学习”到底是什么?这篇文章讲明白了
- 阿里“AI搭配师”一秒给你100种穿搭建议,程序员进军女性时尚靠什么?
- 刻不容缓!联合国加开会议讨论「如何限制杀人机器人」
- xml配置javaBean的IOC实现示例
- ansible执行拷贝/脚本/任务计划/yum/service
- android apk 防止反编译技术加壳技术(转)