zoukankan      html  css  js  c++  java
  • 大话设计模式读书笔记--11.抽象工厂模式

    定义

    抽象工厂模式定义:

    提供一个创建一系列相关或相关依赖对象的接口,而无需指定他们具体的类

    抽象工厂模式通常是用于创建一族产品,并且这族产品分不同的等级;不同的具体工厂类生产不同等级的一族产品

    比如下图(来源于网络)

    两厢车和三厢车称为两个不同的等级结构;2.0排量两厢车和2.0排量三厢车成为同一个产品族。

    与工厂方法模式的区别

    工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式

    模式结构

    下图来源于网络

    AbstractFactory:是一个抽象工厂,包含所有产品创建的的抽象方法

    ProductA和我ProductB: 是抽象产品,之所以抽象,是因为有两种不同的实现

    代码实现

    场景:  sqlServer数据库中有两User表和Department表, 由于客户需求,需要把sqlServer数据库换成Access数据库

    场景分析: User相当于抽象产品ProductA, sqlServer数据库的User相当于ProductA1

    点击下载代码: 抽象模式实现

    点击下载代码: 简单工厂+反射+配置文件

    特点及使用场景

    优点:  在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理

    缺点:  扩展困难,产品族中需要增加一个新的产品,则几乎所有的工厂类都需要进行修改

    使用场景:  就是一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),

                  并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式

  • 相关阅读:
    第七章习题G题
    第二周习题O题
    P4735 最大异或和
    P3008 [USACO11JAN]道路和飞机Roads and Planes
    P4009 汽车加油行驶问题
    P1073 最优贸易
    P2260 [清华集训2012]模积和
    P2865 [USACO06NOV]路障Roadblocks
    P1821 [USACO07FEB]银牛派对Silver Cow Party
    P4180 【模板】严格次小生成树[BJWC2010]
  • 原文地址:https://www.cnblogs.com/liuconglin/p/6436027.html
Copyright © 2011-2022 走看看