zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    P1227 【[JSOI2008]完美的对称】
    Hive使用Calcite CBO优化流程及SQL优化实战
    深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化
    神奇的传送门
    怎么设计一个秒杀系统
    我的收藏
    Redis 客户端 Jedis、lettuce 和 Redisson 对比
    Redis 的完整安装过程
    Redis GEO 功能使用场景
    Redis 传送门
  • 原文地址:https://www.cnblogs.com/kimi-gyj/p/3513725.html
Copyright © 2011-2022 走看看