首页 > 编程语言 >Java设计模式之工厂模式。

Java设计模式之工厂模式。

时间:2024-03-17 10:30:11浏览次数:23  
标签:Product Java 创建 Factory 工厂 设计模式 public

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,是一种创建型设计模式,用于创建对象不暴露创建逻辑。工厂模式包括工厂方法模式和抽象工厂模式,下面结合代码看看它的使用用法吧。

// 产品接口
interface Product {
    void produce();
}

// 具体产品类
class ConcreteProduct implements Product {
    @Override
    public void produce() {
        System.out.println("具体的产品");
    }
}

// 工厂接口
interface Factory {
    Product createProduct();
}

// 具体工厂类  //用于创建产品
class ConcreteFactory implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProduct();
    }
}

// 测试类
public class FactoryPatternExample {
    public static void main(String[] args) {
        Factory factory = new ConcreteFactory();
        Product product = factory.createProduct();
        product.produce();
    }
}

工厂模式的使用场景:
明确地知道不同条件下创建不同实例,适用于需要根据不同条件创建不同对象的场景。

优点:

  1. 将对象的创建和使用分离,降低了系统的耦合性。
  2. 符合开闭原则,新增产品类时只需扩展工厂类而不需要修改已有代码。

缺点:

  1. 增加了系统中类的个数,增加了系统的复杂度。
  2. 当产品类较多时,需要编写大量的工厂类,增加了系统的维护成本。

标签:Product,Java,创建,Factory,工厂,设计模式,public
From: https://blog.csdn.net/2401_82884096/article/details/136593898

相关文章

  • 代码随想录算法训练营第十天(栈和队列I)| 232. 用栈实现队列、225. 用队列实现栈(JAVA)
    文章目录栈和队列理论基础概念方法栈队列232.用栈实现队列解题思路源码225.用队列实现栈解题思路源码总结栈和队列理论基础概念栈:后进先出队列:先进先出方法栈方法名作用Stackstack=newStack<>();构造栈stack.push(Ee)将e入栈,并返回estack.pop()将栈......
  • JAVA实现大文件分片上传断点续传
    直接上代码importorg.springframework.web.multipart.MultipartFile;importjava.util.concurrent.CompletableFuture;importorg.apache.commons.lang3.StringUtils;importlombok.extern.slf4j.Slf4j;importjava.text.DecimalFormat;importjava.io.*;@Slf4jpublic......
  • 智能酒店管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着科技的进步和旅游业的繁荣,酒店行业正面临着前所未有的机遇与挑战。为了提高服务质量、运营效率以及顾客满意度,智能酒店管理系统应运而生。这种系统利用......
  • 灾情信息管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着自然灾害频发,及时有效的灾情信息管理对于灾害应对和救援工作至关重要。一个专业的灾情信息管理系统能够帮助政府和救援组织快速收集、处理和分析灾区数......
  • java设计模式
    单例设计模式java实现(一)单例设计模式​单例设计模式(SingletonPattern)确保某个类中只有一个实例,而且这个类是不能被实例化的,也就是不能用new关键字来创建对象,该类提供了公共静态的方法,用于返回该类对象,不需要自行实例化。而单例模式有分为饿汉式,以及懒汉式。特点一......
  • 智慧教室预约(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图 项目介绍随着教育数字化转型的深入,智慧教室成为提升教学质量和效率的重要环境。智慧教室预约系统能够有效管理教学资源,实现教室使用的优化配置,确保设备高效利用。它......
  • Java映射(含源码)
    在Java中,“映射”(Map)是一个存储键值对的数据结构,允许你通过键(Key)快速访问值(Value)。映射中的每个键都是唯一的,这意味着每个键都对应一个特定的值。Java提供了几种实现映射接口的类,其中最常用的是HashMap、TreeMap和LinkedHashMap。下面是这些实现的简要介绍和它们之间的区别,......
  • Java中的synchronized
    概述Java的锁可以分为乐观锁和悲观锁两类。而synchronized是悲观锁的代表。本文想要说明一下两个问题:synchronized锁的是哪个对象publicvoidmethod(){ synchronized(this){ ... }}publicsynchronizedvoidmethod(){ ...}    上述两种方式,synchronize......
  • JavaScript学习 第三天
    一、数组(一)数组基本知识声明按顺序保存数据的数据类型<body><script>letarr=[1,2,'猪儿',true]</script></body>声明数组函数<body><script>letarr=newArray(1,2,'猪儿',true)</script></body>......
  • JavaScript学习 第一天
    一、什么是JavaScript(一)介绍是一种运行在浏览器的编程语言,进行人机交互(二)可以做什么可以做网页特效,表单验证,进行数据交互,还有服务端编程node.js(三)组成由ECMAScript和WebAPIs组成其中WebAPIs由DOM和BOM组成ECMAScript:js基础语法知识WebAPIs:DOM:操作文......