Java设计模式-工厂模式(FactoryPattern)

简介: Java设计模式-工厂模式(FactoryPattern)

文章目录

简介

设计模式在编程中的作用是不言而喻的,优秀的程序员都会考虑各种设计模式的合理运用,本篇将进行设计模式的讲解。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

设计模式分类

大致可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。

70a2ee1b42b64cd7afc509c99ffd3a57.png

工厂模式(FactoryPattern)

**主要目的:**定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

具体的实现子类来进行具体的实现需要功能。

举例:以生产电脑为例子,我们需要生产不同类型的电脑,如联想,dell, huawei等。话不多说,直接上代码。

步骤1:创建一个生产电脑的接口:

/**

* 创建电脑的接口

*/

public interface Computer {

   //提供一个创建电脑的方法

   void createComputer();

}

步骤2: 创建不同类型电脑的实现类

联想电脑:

/**

* 联想电脑

*/

public class LenovoComputer implements Computer{

   @Override

   public void createComputer() {

       System.out.println("生产联想电脑");

   }

}

dell电脑:

/**

* dell

*/

public class DellComputer implements Computer {

   @Override

   public void createComputer() {

       System.out.println("生产dell电脑");

   }

}

华为电脑:

/**

* 华为

*/

public class HuaweiComputer implements Computer {

   @Override

   public void createComputer() {

       System.out.println("生产华为电脑");

   }

}

步骤3:提供工厂进行获取对应的电脑

/**

* 提供一个对外的方法获取电脑实体

*/

public class ComputerFactory {

   //使用 getComputer 方法获取对应的电脑实体

   public Computer getComputer(String computerType){

       if(computerType == null){

           return null;

       }

       if("LENOVO".equalsIgnoreCase(computerType)){

           return new LenovoComputer();

       } else if("HUAWEI".equalsIgnoreCase(computerType)){

           return new HuaweiComputer();

       } else if("DELL".equalsIgnoreCase(computerType)){

           return new DellComputer();

       }

       return null;

   }

}

测试

public class FactoryPatternTest {

   public static void main(String[] args) {

       //获取电脑工厂类

       ComputerFactory computerFactory = new ComputerFactory();

       //获取dell

       Computer dell = computerFactory.getComputer("DELL");

       dell.createComputer();

       //获取联想

       Computer lenovo = computerFactory.getComputer("LENOVO");

       lenovo.createComputer();

       //获取华为

       Computer huawei = computerFactory.getComputer("HUAWEI");

       huawei.createComputer();

   }

}

结果:

生产dell电脑

生产联想电脑

生产华为电脑

工厂模式在spring的应用

spring最重要的两个功能就是IOC以及AOP,IOC就是依赖注入,AOP面向切面编程。其中工厂模式主要就是管理我们实例的创建问题,spring的beans包,主要就是方便我们对应用的类实例的管理。主要设计两个类:BeanFactory,FactoryBean。


99c5f9b52abf4c529864f5e6d0cb4fc0.png

spring管理bean的机制,可以通过xml统一配置bean或者通过注解进行配置bean,启动实例的时候,通过容器进行注入bean,我们使用的时候就从容器中获取实例使用就ok。


总结

工厂模式在实际中应用非常广泛,深入了解需要去看看框架的源码,如Spring,Mybatis等。


相关文章
|
17天前
|
设计模式 Java 开发者
设计模式揭秘:Java世界的七大奇迹
【4月更文挑战第7天】探索Java设计模式:单例、工厂方法、抽象工厂、建造者、原型、适配器和观察者,助你构建健壮、灵活的软件系统。了解这些模式如何提升代码复用、可维护性,以及在特定场景下的应用,如资源管理、接口兼容和事件监听。掌握设计模式,但也需根据实际情况权衡,打造高效、优雅的软件解决方案。
|
18天前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
33 4
|
18天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
22天前
|
设计模式 Java 数据库
Java设计模式精讲:让代码更优雅、更可维护
【4月更文挑战第2天】**设计模式是解决软件设计问题的成熟方案,分为创建型、结构型和行为型。Java中的单例模式确保类仅有一个实例,工厂方法模式让子类决定实例化哪个类。适配器模式则协调不兼容接口间的合作。观察者模式实现了一对多依赖,状态变化时自动通知相关对象。学习和适当应用设计模式能提升代码质量和可维护性,但需避免过度使用。设计模式的掌握源于实践与不断学习。**
Java设计模式精讲:让代码更优雅、更可维护
|
26天前
|
设计模式 安全 Java
在Java中即指单例设计模式
在Java中即指单例设计模式
18 0
|
17天前
|
设计模式 监控 Java
设计模式 - 观察者模式(Observer):Java中的战术与策略
【4月更文挑战第7天】观察者模式是构建可维护、可扩展系统的关键,它在Java中通过`Observable`和`Observer`实现对象间一对多的依赖关系,常用于事件处理、数据绑定和同步。该模式支持事件驱动架构、数据同步和实时系统,但需注意避免循环依赖、控制通知粒度,并关注性能和内存泄漏问题。通过明确角色、使用抽象和管理观察者注册,可最大化其效果。
|
1月前
|
设计模式 存储 安全
Java设计模式---结构型模式
Java设计模式---结构型模式
|
6天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
9天前
|
设计模式 算法 Java
小谈设计模式(30)—Java设计模式总结
小谈设计模式(30)—Java设计模式总结
|
10天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
15 1