zoukankan      html  css  js  c++  java
  • Abstract Factory


    参考:http://www.dofactory.com/Patterns/Patterns.aspx
    Abstract Factory: http://www.dofactory.com/Patterns/PatternAbstract.aspx

    理解:

    Abstract Factory 应该是模式中比较常用的一个
    基本原理用一句话来概括就是

    一个定义好的类,在使用的前一刻才调用其具体实现来完成操作..

    通常的用法
    项目不知道用哪一种数据库

    于是我定义了一个抽像类 类(A)
    并偷偷地将 类(A) 中的方法 针对每种数据库分别全部实现

    于是在项目中需要使用到 类(A) 的时候 全部用调用 类(A)
    而不指定是哪种数据库

    但当最后不得不把数据输出的时候就要指定 类(A) 的那些方法到底是调用哪种数据库的.
    具体一般用反射(具体我也大懂,看看例子就明白了)来实现..

    ---------------------------------------------------------------------------------

    用通俗的说法就是

    我答应送给你一辆车,但我不告诉你是什么车
    于是,在送给你的时候,就可以送你一辆玩具车或者是真车...

    -----------------------------------------------------------------------

    好处:

    具体就是方法的推迟实现

    以便项目需求改变时(例子里就是用户想换数据库时)
    只需要稍稍改就可以了.而不用再重新开发..

    -----------------------------------------------------------------------------

    也可以用接口来实现此 模式.
    --------------------------------------------------------

    doodas的支持多种数据库就是照着这种模式实现的

    http://www.mygenerationsoftware.com/portal/dOOdads/Overview/tabid/63/Default.aspx

    参考页面的那个例子太OO了,代码看起来是好看
    就是难理解//


    //add by day
    //1/25/2006
    //源:http://www.lvjiyong.com/books/DesignPatterns/12.html
    //适用环境

    一个系统要独立于它的产品的创建、组合和表示时。
    一个系统要由多个产品系列中的一个来配置时。
    当你要强调一系列相关的产品对象的设计以便进行联合使用时。
    当你提供一个产品类库,而只想显示它们的接口而不是实现时。



    //add by day
    //2/2/2006
    //本以为可以写点东西,看来设计模式还是太精深了,以后再研究吧..奶奶的



  • 相关阅读:
    rabbitmq入门
    php7.2 安装redis扩展
    php安装扩展的几种方法
    yum安装php7.2
    相关报错
    [枚举]P1089 津津的储蓄计划
    [DFS]排列的生成
    [枚举]P1085 不高兴的津津
    [模拟]P1047 校门外的树
    [模拟]P1046 陶陶摘苹果
  • 原文地址:https://www.cnblogs.com/day/p/321602.html
Copyright © 2011-2022 走看看