工厂模式及其抽象工厂

1 工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到一个子类。

理解:每个实现对应一个具体的工厂类。每一个工厂依赖一个具体的实现,工厂的存在依赖其具体的实现

        客户端需要知道具体的工厂类。

内容:抽象工厂类及具体工厂,操作抽象类及具体操作类,工厂类创建操作类,每个工厂类依赖具体的操作类。

作用:将简单工厂模式的修改从工厂类转移到客户端,符合开放封闭原则。缺点是开发量较大,客户端需要修改。

        1.在编码时不能预见需要创建哪种类的实例。
        2.系统不应依赖于产品类实例如何被创建、组合和表达的细节

其他:解决客户端需要修改的策略:利用反射机制和XML配置,完成模式的完美

UML图:

2 抽象工厂模式:

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

理解: 如sqlServer和Oracle两个家族,每个产品族,如用户类,部门类

作用:应对多产品家族的转换

内容:多个产品族抽象类以及具体实现类,工厂抽象类及其具体工厂类

其他:产品族:位于不同产品等级结构中,功能相关联的产品组成的家族。如跑车族,赛车族等。

UML图:

2 demo 多个数据库种类和实现

每一个数据库就是一个具体抽象类

3 对抽象工厂模式的改进

将工厂类,简化为一个DataAccess类,内部选择具体的产品对象

原文地址:https://www.cnblogs.com/wwwfj/p/3227397.html