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)的更多相关文章

  1. java设计模式_工厂模式

    关于设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证 ...

  2. .Net设计模式_工厂模式(1)

    工厂模式有三个模式: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式 1.简单工厂 引言: 我是消费者,我 ...

  3. java_设计模式_工厂模式_Factory Pattern(2016-08-04)

    工厂模式主要是为创建对象提供了接口.工厂模式按照<Java与模式>中的提法分为三类: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory ...

  4. Spring设计模式_工厂模式

    先说下工厂模式的特性 1.对于调用者来说,影藏了复杂的逻辑处理过程,调用者只关心执行结果. 2.工厂要对结果负责,保证生产出符合规范的产品. Git代码地址  https://github.com/w ...

  5. PHP设计模式_工厂模式

    个人理解工厂类相当于平时用的基类,只需要把类new一次然后付给一个变量,以后直接引入基类调用变量使用类里的方法即可 了解 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new. 使用工厂模式,可 ...

  6. .Net设计模式_工厂模式(2)

    2.工厂方法模式 引言: 上一篇中我们描述了简单工厂的缺点,而解决方法就是把工厂接口化,把工厂的行为标准化,这就是工厂方法模式. 理解: 工厂能制造A和B鞋,如果消费者现在要求制造C鞋.D鞋...咋办 ...

  7. 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#

    负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...

  8. java设计模式2————工厂模式

    1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...

  9. 设计模式——抽象工厂模式及java实现

    设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ...

随机推荐

  1. SQL Server 连接字符串和身份验证详解

    SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1; ...

  2. android & Linux uevent机制

    Linux uevent机制 Uevent是内核通知android有状态变化的一种方法,比如USB线插入.拔出,电池电量变化等等.其本质是内核发送(可以通过socket)一个字符串,应用层(andro ...

  3. .NET的类型层次查看工具

    上周为了快速了解一个.NET的库而需要查看其类型层次.假如要在文章中表示一个类型层次,还是用文本比较舒服,截图始终是不方便.Reflector虽然能够显示类型层次,但我无法方便的把显示出来的类型层次转 ...

  4. BZOJ_1623:_[Usaco2008_Open]_Cow_Cars_奶牛飞车_(贪心)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1623 n头牛,第i头牛的速度是si,m条路(m<=n).如果第i头牛前面有k头牛,它的速 ...

  5. GotFocus和PreviewLeftButtonDown事件

    当TextBox获得焦点后,其中的文字会被全选.通过GotFocus和PreviewLeftButtonDown事件,就可以模拟上述行为. 如果用户只是用键盘操作,GotFocus事件就足够了. 如果 ...

  6. HashPasswordForStoringInConfigFile 已过时

    在.net 4.5版本下,使用System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile进行MD5加密时,会出 ...

  7. JZ2440开发笔记(3)——配置TFTP

    第一步: 1.关闭ubuntu的防火墙 ufw disable2.卸载了iptables         apt-get remove iptables 1.用iptables -F这个命令来关闭防火 ...

  8. 从html5标准的正式发布到国内CMS的变革

    10月底万维网联盟(W3C)宣布,经过将近8年的艰辛努力,HTML5标准规范终于最终制定完成并正式发布. W3C的正式批准让人们对HTML5更有信心.“这是一个里程碑,标志着很多人员在长达七年时间内投 ...

  9. HDU 2554 N对数的排列问题

    LINK:HDU 2554 这是昨天晚上小练里面比较有趣的一道题~我在做的时候思路错了,以为数字的排列会有规律,结果后面发现就算有也很难找......╮(╯▽╰)╭ 看了网上的题解,有一种恍然大悟的感 ...

  10. D3D游戏编程系列(三):自己动手编写即时战略游戏之寻路

    说起即时战略游戏,不得不提的一个问题是如何把一个物体从一个位置移动到另一个位置,当然,我说的不是瞬移,而是一个移动的过程,那么在这个移动的过程中我们如何来规划路线呢,这就不得不提到寻路了. 我所了解到 ...