【设计模式】抽象工厂模式及其在Java源码中的应用

本文介绍了抽象工厂模式的目的和一个笔记本销售的例子,详细阐述了抽象工厂模式的UML图,并提供了Java代码示例。文章以Java JDBC中的Connection接口为例,展示了抽象工厂如何在实际代码中体现,解释了Connection作为抽象工厂,Statement、PreparedStatement和CallableStatement作为抽象产品,以及数据库驱动如何实现这些接口。
摘要由CSDN通过智能技术生成

文章相关代码与图片均在:github

目录

 

一、目的

二、例子

三、抽象工厂模式UML图

​四、Java代码示例

1.库房(抽象工厂)

2.戴尔库房(具体工厂)

3.华为库房(具体工厂)

4.充电器(抽象产品)

5.笔记本(抽象产品)

6.戴尔笔记本(具体产品)

7.华为笔记本(具体产品)

8.华为充电器(具体产品)

9.戴尔充电器(具体产品)

10.Client(理论上仅由抽象产品与抽象工厂实现)

五、Java源码中的抽象工厂案例

1.Connection

2.Statement

3.PreparedStatement

4.CallableStatement

5.JDBC抽象工厂UML图


一、目的

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

二、例子

你是一个笔记本商家,现在在出售华为与戴尔笔记本电脑(假设每种品牌只有一种产品)每个商品由充电器与笔记本本体组成,你有华为库房与戴尔库房分别存放这些商品,每卖出一个产品只需要去对应库房拿出充电器和笔记本就可以了,不需要在意实际品牌。

在上面这个例子中

华为库房与戴尔库房是具体工厂

库房是抽象工厂

戴尔充电器、华为充电器、戴尔笔记本、华为笔记本是具体产品

充电器与笔记本是抽象产品

三、抽象工厂模式UML图

例子的关系图如下

四、Java代码示例

1.库房(抽象工厂)

/**
 * 库房(抽象工厂)
 */
public abstract class StorageFactory {
    //获取充电器
    public abstract Charger createCharger();
    //获取笔记本
    public abstract NoteBook createNoteBook();
}

2.戴尔库房(具体工厂)

具体工厂应该继承抽象工厂并实现抽象方法,这里继承了之前的抽象工厂StorageFactory。

/**
 * 戴尔库房(具体工厂)
 */
public class DellStorageFactory extends StorageFactory {
    /**
     * 获得戴尔充电器
     * @return
     */
    public Charger createCharger() {
        return new DellCharger();
    }
    /**
     * 获得戴尔笔记本
     * @return
     */
    public NoteBook createNoteBook() {
        return new DellNoteBook();
    }
}

3.华为库房(具体工厂)

/**
 * 华为库房(具体工厂)
 */
public class HuaWeiStorageFactory extends StorageFactory {
    /**
     * 获得华为充电器
     * @return
     */
    public Charger createCharger() {
        return n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值