.Net设计模式_工厂模式(3)
3、抽象工厂模式
引言:
我们知道汽车需要很多部件才能组装成一辆成品的车,那么我们需要汽车厂生产很多东西,如:马达、车轴、轮胎等,这些东西组装起来后成为了一辆车。
这些东西就是产品族,图解:(出之http://www.cnblogs.com/zhenyulu/articles/36885.aspx)

这张图很明确的诠释了,工厂和产品族的关系。
理解:
引出产品族的概念是为了说明,工厂不可能只生产一个商品,它会生产很多很多商品。
也就是一个工厂接口有很多的行为(这个才是我们经常用到的),接口的每个行为就是一个产品(一个方法结果)。
代码示例:
我们有多个商品:
// 轮胎
public interface IWheel
{
void Use();
}
// 汽车
public interface ICar
{
void Repair();
}
....
我们的工厂都可以造很多商品:
public interface IFactory2
{
// 轮胎
IWheel CreateWheel();
// 汽车
ICar CreateCar();
}
到这个其实可以通俗的理解为:工厂模式,就是把对象接口化抽象化的处理,
然后把对象的行为,都抽象为函数方法。
同时我们可以通过细分,实现接口套接口的模式,从而实现,代码的可扩展性、低耦合度的功能。
应用场景:
如果系统的用户信息来源不确定性很高,那么我们设计一个IUser接口,来规范系统操作或者获取人员信息的行为,如:
UserEntity GetUserInfo(String _userCode);
Int32 InsertUserInfo(UserEntity _userInfo);
....
那么,无论我们的系统是被哪儿厂商的授权系统整合,我们都不需要修改我们的系统,因为我们的系统调用的是IUser,
我们只要根据不同厂商的授权系统,去写一个IUser的适配器实现就可以了。
这就是工厂模式最常用的一个应用场景。
源代码下载(百度网盘):http://pan.baidu.com/s/1c03lAoC
CSDN下载:http://download.csdn.net/detail/hater22/6833939
.Net设计模式_工厂模式(3)的更多相关文章
- java设计模式_工厂模式
关于设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证 ...
- .Net设计模式_工厂模式(1)
工厂模式有三个模式: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 1.简单工厂 引言: 我是消费者,我 ...
- java_设计模式_工厂模式_Factory Pattern(2016-08-04)
工厂模式主要是为创建对象提供了接口.工厂模式按照<Java与模式>中的提法分为三类: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory ...
- Spring设计模式_工厂模式
先说下工厂模式的特性 1.对于调用者来说,影藏了复杂的逻辑处理过程,调用者只关心执行结果. 2.工厂要对结果负责,保证生产出符合规范的产品. Git代码地址 https://github.com/w ...
- PHP设计模式_工厂模式
个人理解工厂类相当于平时用的基类,只需要把类new一次然后付给一个变量,以后直接引入基类调用变量使用类里的方法即可 了解 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new. 使用工厂模式,可 ...
- .Net设计模式_工厂模式(2)
2.工厂方法模式 引言: 上一篇中我们描述了简单工厂的缺点,而解决方法就是把工厂接口化,把工厂的行为标准化,这就是工厂方法模式. 理解: 工厂能制造A和B鞋,如果消费者现在要求制造C鞋.D鞋...咋办 ...
- 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#
负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...
- java设计模式2————工厂模式
1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...
- 设计模式——抽象工厂模式及java实现
设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...
随机推荐
- 转自 Good morning 的几句精辟的话
1.志愿者招募 根据流量平衡方程来构图非常方便,而且简单易懂,以后可能成为做网络流的神法之一 简单记一下流量平衡方程构图法的步骤: a.列出需求不等式 b.通过设置松弛变量,将不等式变成等式 c.两两 ...
- windows API中的各种字符串的本质
windows 库中的各种string, char, wchar, TCHAR, lpstr, lpwstr, lpcwstr , cstring , BSTR, _bstr_t 等 ...
- CCR源码分析-CCR架构
CCR,并发与协调运行时(Concurrency and Coordination Runtime).从名字里我们就可以知道,这个东东是用来简化并发程序设计的.为何要并发呢?因为我们有多个任务需要处理 ...
- UVA 1351 - String Compression
题意: 对于一个字符串中的重复部分可以进行缩写,例如"gogogo"可以写成"3(go)",从6个字符变成5个字符.."nowletsgogogole ...
- Android增量更新
http://blog.csdn.net/tu_bingbing/article/details/8538592 (转)
- 【原】Redis入门教程
最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...
- Windows下Lua+Redis 断点调试环境搭建==Linux下类似
Lua+Redis 断点调试环境搭建 windows环境,使用Redis,写lua脚本头疼的问题之一不能对脚本断点调试,google加上自己的摸索,终于搞定. 1.下载ZeroBraneStudio, ...
- 记一次 Google 面试经历
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 这是我上周去面试的地方.很顺利,我觉得——至少我认为我已经尽我所能,并且无论发生什么事情对我都是有帮助的. 由于 ...
- WPF线程获取UI线程
WPF中只能是UI线程才可以改变UI控件相关,当采用多线程工作时,可用以下代码获取 UI线程进行操作: App.Current.Dispatcher.Invoke((Action)delegate() ...
- 问题-Delphi不能进行调试模式
问题现象:delphi不能进行调试模式 问题原因:可能是防火墙的原因,我有一次在电脑清理时,把delphi的调试程序名放在了360的黑名单中,按F9后,无法调试. 问题处理:你懂的(要不白名单,要不你 ...