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