设计模式 笔记6 | 抽象工厂模式 在 JDK 源码中的应用 | JDBC 知识回顾 | java.sql 里的抽象工厂 Connection,其内部声明了不同的 Statement 抽象产品

本文回顾了抽象工厂模式,并详细介绍了JDBC的结构、驱动程序类型,尤其是100%纯Java实现的JDBC驱动。在JDBC中,Connection接口作为抽象工厂,创建了Statement、PreparedStatement和CallableStatement等抽象产品。通过MySQL驱动的源码分析,揭示了抽象工厂模式在JDBC中的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、抽象工厂模式知识回顾


参考笔记:设计模式 学习笔记(一)五个创建型模式 | Java 语言实现 | 工厂方法设计模式 | 抽象工厂模式 |建造者模式 | 单例模式 | 原型模式

抽象工厂:一种为访问类提供一个能创建一组相关或者相互依赖对象的接口
是工厂方法的升级版本,工厂方法只生产一个等级的产品,而抽象工厂则可生产多个等级的产品。

优点:

  • 支持同时管理多个等级产的产品
  • 可扩展性高,符合开闭原则

缺点:

  • 由于是抽象的工厂,在增加新产品时,所有的工厂类都需要修改

主要组成

1)Absract Factory 抽象工厂,提供创建产品的接口,可创建多个不同等级的产品
2)Concrete Factory 具体工厂,主要实现抽象产品中的多个抽象方法,完成具体产品的创建
3)Product 抽象产品,定义了产品的规范,描述其主要的特性和功能,一般有多个
4)Concrete Product 具体产品,实现了抽象产品所定义的接口,由具体工厂 Concrete Factory 来创建,与具体工厂的关系是 N : 1

模板代码:

// 抽象产品1
interface Product1 {
   
    public void produce();  // 生产
    public void sale();     // 销售
}
// 具体产品1
class ConcreteProduct1A implements Product1{
   
    @Override
    public void produce() {
   
        System.out.println("产品1的A 生产成功");
    }
    @Override
    public void sale() {
   
        System.out.println("产品1的A 出售成功");
    }
}
// 具体产品2
class ConcreteProduct2A implements Product2{
   

    @Override
    public void product() {
   
        System.out.println("产品2的A 生产成功");
    }

    @Override
    public void sale() {
   
        System.out.println("产品2的A 销售成功");
    }
}
// 抽象产品1
interface Product2{
   
    public void product();  // 生产
    public void sale();    // 销售
}
// 抽象工厂
interface AbstractFactory{
   
    public Product1 newProduct1();
    public Product2 newProduct2();
}
// 具体工厂
class ConcreteFactory implements AbstractFactory{
   

    @Override
    public Product1 newProduct1() {
   
        System.out.println("工厂1 开始生产 产品1...");
        return new ConcreteProduct1A();
    }
    @Override
    public Product2 newProduct2() {
   
        System.out.println("工厂2 开始生产 产品2...");
        return new ConcreteProduct2A();
    }
}
public class Demo {
   
    public static void main(String[] args) {
   
        // 创建工厂
        ConcreteFactory factory = new ConcreteFactory();
        // 生产
        Product1 product1 = factory.newProduct1();
        Product2 product2 = factory.newProduct2()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值