【玩转23种Java设计模式】创建型模式篇:抽象工厂模式

简介: 抽象工厂模式提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

汇总目录链接:【玩转23种Java设计模式】学习目录汇总整理

一、简介

  提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。

二、实例

实例:创建小米工厂和华为工厂,生产多个产品(手机、电脑、电视......)。
在这里插入图片描述

1、手机标准接口(Phone)

public interface Phone {
    void make();
}

2、华为手机实现类(HuaWeiPhone)

public class HuaWeiPhone implements Phone {
    @Override
    public void make() {
        System.out.println("make huawei phone");
    }
}

3、小米手机实现类(XiaoMiPhone)

public class XiaoMiPhone implements Phone {
    @Override
    public void make() {
        System.out.println("make xiaomi phone");
    }
}

4、电脑标准接口(PC)

public interface PC {
    void code();
}

5、华为电脑实现类(HuaWeiPC)

public class HuaWeiPC implements PC {
    @Override
    public void code() {
        System.out.println("huawei pc code");
    }
}

6、小米电脑实现类(XiaoMiPC)

public class XiaoMiPC implements PC {
    @Override
    public void code() {
        System.out.println("xiaomi pc code");
    }
}

7、抽象工厂接口(Factory)

public interface Factory {
    Phone makePhone();
    PC makePC();
}

8、华为工厂实现类(HuaWeiFactory)

public class HuaWeiFactory implements Factory {
    @Override
    public Phone makePhone() {
        return new HuaWeiPhone();
    }

    @Override
    public PC makePC() {
        return new HuaWeiPC();
    }
}

9、小米工厂实现类(XiaoMiFactory)

public class XiaoMiFactory implements Factory {
    @Override
    public Phone makePhone() {
        return new XiaoMiPhone();
    }

    @Override
    public PC makePC() {
        return new XiaoMiPC();
    }
}

10、测试类(Main)

public class Main {
    public static void main(String[] args) {
        XiaoMiFactory xiaoMiFactory = new XiaoMiFactory();
        Phone phone = xiaoMiFactory.makePhone();
        phone.call();
        PC pc = xiaoMiFactory.makePC();
        pc.code();
    }
}

控制台输出:

xiaomi phone call
xiaomi pc code

三、总结

1、优点

  • 封装性。具体产品在应用层代码隔离,无须关心创建细节。
  • 当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。

2、缺点

  • 产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。

3、应用场景

  • QQ 换皮肤,一整套一起换。
  • 生成不同操作系统的程序。
相关文章
|
1天前
|
设计模式 存储 负载均衡
【五】设计模式~~~创建型模式~~~单例模式(Java)
文章详细介绍了单例模式(Singleton Pattern),这是一种确保一个类只有一个实例,并提供全局访问点的设计模式。文中通过Windows任务管理器的例子阐述了单例模式的动机,解释了如何通过私有构造函数、静态私有成员变量和公有静态方法实现单例模式。接着,通过负载均衡器的案例展示了单例模式的应用,并讨论了单例模式的优点、缺点以及适用场景。最后,文章还探讨了饿汉式和懒汉式单例的实现方式及其比较。
【五】设计模式~~~创建型模式~~~单例模式(Java)
|
1天前
|
设计模式 XML 存储
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
文章详细介绍了抽象工厂模式,这是一种创建型设计模式,用于提供一个接口以创建一系列相关或相互依赖的对象,而不指定它们具体的类。通过代码示例和结构图,文章展示了抽象工厂模式的动机、定义、结构、优点、缺点以及适用场景,并探讨了如何通过配置文件和反射机制实现工厂的动态创建。
【三】设计模式~~~创建型模式~~~抽象工厂模式(Java)
|
1天前
|
设计模式 XML 存储
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
文章详细介绍了工厂方法模式(Factory Method Pattern),这是一种创建型设计模式,用于将对象的创建过程委托给多个工厂子类中的某一个,以实现对象创建的封装和扩展性。文章通过日志记录器的实例,展示了工厂方法模式的结构、角色、时序图、代码实现、优点、缺点以及适用环境,并探讨了如何通过配置文件和Java反射机制实现工厂的动态创建。
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
|
1天前
|
设计模式 XML Java
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
文章详细介绍了简单工厂模式(Simple Factory Pattern),这是一种创建型设计模式,用于根据输入参数的不同返回不同类的实例,而客户端不需要知道具体类名。文章通过图表类的实例,展示了简单工厂模式的结构、时序图、代码实现、优缺点以及适用环境,并提供了Java代码示例和扩展应用,如通过配置文件读取参数来实现对象的创建。
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
|
4天前
|
设计模式 算法 Java
Java编程中的设计模式:简化复杂性的艺术
在Java的世界中,设计模式如同一位智慧的导师,指引着开发者们在复杂的编码迷宫中找到出口。本文将深入浅出地探讨几种常见的设计模式,通过实例演示如何在Java项目实践中运用这些模式,从而提升代码的可维护性和扩展性。无论你是新手还是资深开发者,这篇文章都将为你打开一扇通往高效编码的大门。
12 1
|
6天前
|
设计模式 Java C语言
设计模式-----------工厂模式之抽象工厂模式(创建型)
抽象工厂模式是一种创建型设计模式,它提供了一个接口用于创建一系列相关或相互依赖的对象,而无需指定具体类,从而增强了程序的可扩展性并确保客户端只使用同一产品族的产品。
设计模式-----------工厂模式之抽象工厂模式(创建型)
|
6天前
|
设计模式 安全 Java
|
10天前
|
设计模式 算法 Java
Java中的设计模式:探索与实践
【8月更文挑战第10天】在Java开发中,设计模式是提升代码可读性、可维护性和扩展性的关键所在。本文将深入探讨几种常见的设计模式及其在实际项目中的应用,帮助开发者更好地理解和运用这些模式,以编写出更高质量的代码。
26 2
|
12天前
|
设计模式 存储 XML
[设计模式]创建型模式-抽象工厂模式
[设计模式]创建型模式-抽象工厂模式
|
12天前
|
设计模式 测试技术 Go
[设计模式]创建型模式-简单工厂模式
[设计模式]创建型模式-简单工厂模式