抽象工厂模式

本文介绍了Java抽象工厂模式,一种用于创建一系列相关对象的设计模式,无需指定具体类。它包括抽象工厂接口、具体工厂类、抽象产品接口和具体产品类等组件。文章还对比了简单工厂、工厂方法和抽象工厂的区别,并通过创建不同类型的电脑作为案例进行说明。
摘要由CSDN通过智能技术生成

文章目录

  • 一、什么是抽象工厂模式?
  • 二、工厂模式分类对比
  • 三、简单案例

一、什么是抽象工厂模式?

        Java抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的方式,而无需指定它们的具体类。它通过将创建逻辑委托给工厂类和工厂接口来实现,这些工厂类和接口定义了一组用于创建不同类型对象的抽象方法。具体实现工厂接口的工厂类可以创建具体的产品对象,而这些产品对象都实现了同一个抽象产品接口。使用抽象工厂模式可以在不改变客户端代码的情况下,轻松地切换产品系列,实现更好的扩展性和灵活性。

Java抽象工厂模式的实现需要以下几个组件:

  1. 抽象工厂接口:定义了一组用于创建不同类型对象的抽象方法。
  2. 具体工厂类:实现抽象工厂接口,具体实现了工厂接口中定义的抽象方法,用于创建具体的产品对象。
  3. 抽象产品接口:定义了产品对象的基本属性和行为。
  4. 具体产品类:实现抽象产品接口,具体实现了产品接口中定义的抽象方法,提供具体的产品实现。

二、工厂模式分类对比

 (图引用,个人觉得很形象)

简单工厂就是提供了一个选择产品的方法,在方法内部抉择产品,而你想要什么样的产品就通过改接口的实现类去获取。

工厂方法则是提供工厂的方法,它是提供了产品的实现,也就是说想要什么样产品就去调用该产品的工厂。

抽象工厂是提供了组合工厂的方法,它是类型相同的工厂放在一起,不同的产品但类型相同却可以调用一个工厂。

三、简单案例

下面是一个使用Java抽象工厂模式创建不同类型的电脑的示例代码:

首先,我们定义一个抽象电脑接口Computer和两个具体电脑类:Laptop和Desktop。

public interface Computer {
    String getRAM();
    String getHDD();
    String getCPU();
}

public class Laptop implements Computer {
    private String ram;
    private String hdd;
    private String cpu;
  
    public Laptop(String ram, String hdd, String cpu){
        this.ram=ram;
        this.hdd=hdd;
        this.cpu=cpu;
    }
  
    public String getRAM() {
        return this.ram;
    }
  
    public String getHDD() {
        return this.hdd;
    }
  
    public String getCPU() {
        return this.cpu;
    }
}

public class Desktop implements Computer {
    private String ram;
    private String hdd;
    private String cpu;
  
    public Desktop(String ram, String hdd, String cpu){
        this.ram=ram;
        this.hdd=hdd;
        this.cpu=cpu;
    }
  
    public String getRAM() {
        return this.ram;
    }
  
    public String getHDD() {
        return this.hdd;
    }
  
    public String getCPU() {
        return this.cpu;
    }
}

接下来,我们定义一个抽象工厂接口ComputerFactory,它包含了创建Laptop和Desktop对象的抽象方法。

public interface ComputerFactory {
    public Computer createComputer();
}

我们还需要定义两个具体工厂类:LaptopFactory和DesktopFactory,分别用于创建Laptop和Desktop对象。

public class LaptopFactory implements ComputerFactory {
    private String ram;
    private String hdd;
    private String cpu;
  
    public LaptopFactory(String ram, String hdd, String cpu){
        this.ram=ram;
        this.hdd=hdd;
        this.cpu=cpu;
    }
  
    public Computer createComputer() {
        return new Laptop(ram, hdd, cpu);
    }
}

public class DesktopFactory implements ComputerFactory {
    private String ram;
    private String hdd;
    private String cpu;
  
    public DesktopFactory(String ram, String hdd, String cpu){
        this.ram=ram;
        this.hdd=hdd;
        this.cpu=cpu;
    }
  
    public Computer createComputer() {
        return new Desktop(ram, hdd, cpu);
    }
}

现在,我们可以使用这些类来创建不同类型的电脑。在下面的示例中,我们使用LaptopFactory创建一个笔记本电脑对象,并使用DesktopFactory创建一个台式电脑对象。

public class Main {
    public static void main(String[] args) {
        ComputerFactory laptopFactory = new LaptopFactory("16 GB", "1 TB", "2.4 GHz");
        Computer laptop = laptopFactory.createComputer();
        System.out.println("Laptop Config::"+laptop);
      
        ComputerFactory desktopFactory = new DesktopFactory("32 GB", "2 TB", "3.5 GHz");
        Computer desktop = desktopFactory.createComputer();
        System.out.println("Desktop Config::"+desktop);
    }
}

这样,我们就使用Java抽象工厂模式创建了不同类型的电脑对象,而无需关心它们的具体类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值