JAVA设计模式之 工厂模式

JAVA编程【设计模式之工厂模式】 工厂模式(Factory Pattern)是一种创建对象的设计模式,它通过隐藏实例化逻辑,使代码更加松耦合、易维护。工厂模式属于创建型设计模式,主要用于解耦对象的创建过程。 阅读详情

工厂模式
实现了创建者和调用者的分离
详细分类
简单工厂模式
工厂方法模式
抽象工厂模式
核心本质:
实例化对象 用工厂方法代替new操作
将选择实现类。创建对象统一管理和控制。从而将调用者跟我们的实现类接耦

简单工厂模式:
1.简单工厂模式也叫静态工厂模式,就是工厂类一般使用静态方法。通过接收参数的不同
来返回不同的对象实例
2.对于增加新产品无能为力,不修改代码的话,是无法扩展的。

代码如下

public interface Car {

    void run();
}

public class Audi implements  Car{
 
   @Override
    public void run() {
        System.out.println("奥迪在跑");
    }

public class Byd implements Car{
    @Override
    public void run() {
        System.out.println("比亚迪在跑");
    }
}
}

public class CarFactory {

    public static   Car creatCar(String  type)
    {
        if("奥迪".equals(type))
        {
            return new Audi();
        }
        else if("比亚迪".equals(type)){

            return new Byd();
        }
        else{

            return null;
        }
    }
}/*
简单工厂情况下
 */

public class Client2 {  //调用者

    public static void main(String[] args) {
        Car c1=CarFactory.creatCar("奥迪");
        Car c2=CarFactory.creatCar("比亚迪");
        c1.run();
        c2.run();

    }
}

工厂方法模式
为了避免简单工厂模式的缺点,不完全满足 OCP(一句话:“Closed for Modification; Open for Extension”——“对变更关闭;对扩展开放”。)
工厂方法模式和简单工厂模式最大的不同在于,简单工厂模式只有一个(对于一个
项目或者说一个独立模块而言)工厂类,而工厂方法模式有一组实现了相同接口的工厂类。
工厂方法设计模式如下

 public class Audi implements  Car{
    
    
    
       @Override
        public void run() {
            System.out.println("奥迪在跑");
        }
    }
    public class AudiFactory implements  CarFactory{

    @Override
    public Car creatcar() {
        return new Audi();
    }
}

public class Benz  implements Car{


    @Override
    public void run() {
        System.out.println("奔驰在跑");
    }
}

public class BenzFactory implements  CarFactory{

    @Override
    public Car creatcar() {
        return new Benz();
    }
}

public class Byd implements Car{
    @Override
    public void run() {
        System.out.println("比亚迪在跑");
    }
}
public interface Car {

    void run();
}

public class BydFactory implements CarFactory{

    @Override
    public Car creatcar() {
        return new Byd();
    }
}

public interface CarFactory {
    Car creatcar();
}

public class Client {

    public static void main(String[] args) {
        Car c1=new AudiFactory().creatcar();
        Car c2=new BydFactory().creatcar();
        Car c3=new BenzFactory().creatcar();
        c1.run();
        c2.run();
        c3.run();
    }
}

我们根据设计理论建议:工厂方法模式,但实际上,我们一般都用简单工厂模式。

抽象工厂模式

用来生产不同产品族的全部产品(对于新的产品无能为力,支持增加产品族)
抽象工厂模式是工厂模式的升级版本,在有多个业务品种,业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

工厂模式要点
简单工厂模式(静态工厂模式)
虽然某种程度不符合设计原则,但是实际使用最多。
工厂方法模式
不修改已有类的前提下 ,通过增加新的工厂类实现扩展
抽象工厂模式
不可以增加产品,可以增加产品族。

(若某个类以Factory结尾,它就是采用工厂模式实现的)

Java设计模式之简单工厂模式 所以,干脆在模块内部新建一个类,在这个类里面来创建接口,然后把创建的接口返回给具体调用者,这样,外部应用就只需根据这个类来获取相应的接口对象,然后就可以操作接口定义的方法了。虽然说简单工厂的方法大多是用来创建接口的,但是仔细分析你会发现,真正能实现功能的是具体的实现类,这些实现类是已经做好的,并不是真的要靠简单工厂来创建出来的,简单工程的方法无外乎就是:实现了选择一个合适的实现类来使用。私有化简单工厂的构造方法,使用静态方法来创建接口,也就不能通过写简单工厂类的子类来改变创建接口的方法行为了。 阅读详情

相关推荐

java设计模式之工厂设计模式——Factory Pattern

设计模式故事会:https://blog.youkuaiyun.com/weixin_40205234/article/details/90664824 工厂模式 工厂模式(Factory Pattern)是java中最常见的设计模式之一,该类型属于创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口指向新创建的对象。 1.简...

ANGEL CITY 3195

java 实现打印机_java怎么实现打印机打印

展开全部接口 PrintService 是 DocPrintJob 的工厂。PrintService 描述了打印机的功能,并可查询它来了解打印机支持的属性1 package com.tj.print; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 6 import javax.print.Doc; 7 import j...

weixin_30245667的博客 1893

【OpenSearch】从零到一:手把手搭建OpenSearch与Dashboard可视化平台

本文提供了一份详细的OpenSearch与Dashboard可视化平台从零搭建指南。内容涵盖环境准备、系统调优、核心服务安装配置、Dashboard部署与汉化,以及生产环境安全加固建议,帮助用户快速构建一个功能完整的搜索与分析平台。

devops8pract的博客 617

Java设计模式-工厂模式

介绍简单工厂模式,工厂方法模式,抽象工厂模式。

m0_62946761的博客 6566

Coding Plan:程序员真实工作的可执行编码决策框架

Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。

weixin_33326218的博客 438

PHP+txt文件存储简易留言板

留言板共三个文件: index.php---展示留言内容和收集表单 write.php---向txt文件写入数据 message.txt---存储留言数据 index.php用于展示留言内容、通过表单把用户输入的数据POST给write.php,write.php把内容写入message.txt。 index.php代码: <?php //设置时区 date_defau...

仿站、源码搭建/迁移技术博客 1031

Java设计模式——工厂模式

本文对设计模式中工厂模式进行思想和原理的讲解,引用实际例子来方便理解。

weixin_56032340的博客 8632

数据分析——员工离职预测

员工离职预测一. 题目描述二. 数据说明三. 步骤实现1.导入并查看2.数据探索性分析3.数据处理4.模型分析5.结果分析(1) 可视化的结果分析(2)特征选择结果分析(3)多模型交叉验证结果分析 一. 题目描述 员工是否准备离职是困扰用人单位的问题,其关系到单位业务的开展及新人员的招聘,及时的分析出有离职倾向的员工成为关键的因素。数据主要包括影响员工离职的各种因素(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)以及员工是否已经离职的对应记录。 二. 数据说明 数据分为训练数据

weixin_43925467的博客 1万+

Java设计模式之工厂模式

工厂模式是Java中最常用的设计模式之一,属于创建型模式。

m0_68821222的博客 1015

Windows下Anaconda换清华镜像源最全指南(含常见问题解决)

本文提供了一份详尽的Windows系统下Anaconda配置清华镜像源的完整指南。针对网络下载缓慢的痛点,文章详细对比了命令行添加与直接编辑配置文件两种主流方法,并重点解决了配置过程中常见的文件缺失、安装失败、环境求解缓慢等疑难问题,帮助用户一劳永逸地提升包管理效率。

brandy的博客 337

Ubuntu系统下STM32开发环境搭建:从零配置CubeMX、VSCode与OpenOCD调试实战

本文详细介绍了在Ubuntu系统下搭建STM32开发环境的完整流程,包括CubeMX、VSCode和OpenOCD的安装配置。通过实战教程指导开发者从基础环境准备到工程创建与调试,提供高效的嵌入式开发解决方案,并分享常见问题解决方法。

potato的博客 941

java设计模式二、工厂

工厂方法模式是一种常用的创建型设计模式,它通过将对象的创建过程封装在工厂类中,实现了创建与使用的分离。这种模式不仅提高了代码的复用性,还增强了系统的灵活性和可扩展性。本文将详细介绍工厂方法模式的三种形式:简单工厂模式、工厂方法模式和抽象工厂模式,并通过Java代码示例帮助你深入理解。工厂方法模式(Factory Method Pattern)由父类提供一个创建对象的方法,允许子类决定实例化对象的类型。这种模式的核心思想是解耦- 将对象的创建过程与使用过程分离,使得代码更容易维护和扩展。

2301_79028279的博客 1454

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 310

Java设计模式之工厂模式详解

设计模式之工厂模式

季鸢的博客 1092

硬件工程师笔记——三极管Multisim电路仿真实验汇总

NPN型三极管:由N型半导体、P型半导体和N型半导体组成,即NPN结构。 PNP型三极管:由P型半导体、N型半导体和P型半导体组成,即PNP结构。 三极管的工作原理基于电流的控制和放大,其核心是基区对电流的控制作用。 将三极管等效为两个串联的二极管进行等效分析

XU157303764的博客 2635

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java设计模式工厂模式_Java中的工厂设计模式

java设计模式工厂模式Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the Creational Design pattern and it’s widely used in JDK as well as frameworks like Spring and Struts. 欢迎...

从零开始的教程世界 349

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Java开发】设计模式 02:工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

尹煜的博客 1506

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java设计模式 工厂,Java 设计模式——工厂模式

image前言最近在复习java设计模式中的工厂模式。本来有一点小小的理解。感觉都写的不错,就是有点太零散了,最后还是决定自己手写一把,加深印象。顺便做个总结,以后复习起来也方便许多。一、简介目前从网上了解工厂模式大体分为简单工厂、工厂方法、抽象工厂等三种模式。工厂方法模式也可称为工厂模式,与抽象模式都是属于GOF23种设计模式中的一员。可以大概理解为:简单工厂进阶变成了工厂方法,然后再进阶成了抽...

weixin_28938701的博客 174

【Java】设计模式——单例、工厂、代理模式

本文介绍了Java中三种常见设计模式:单例模式确保类只有一个实例,分为饿汉式(启动即初始化)和懒汉式(首次访问初始化);工厂模式通过工厂类创建对象,实现创建与使用分离,支持灵活扩展;代理模式通过代理类控制对实际对象的访问,实现权限检查等功能。这些模式各有适用场景,合理运用能提升代码的可维护性和扩展性。文章通过具体代码示例展示了每种模式的实现方式,帮助开发者理解设计模式的核心思想与应用方法。

user340的博客 2520

图解Java设计模式之工厂模式

图解Java设计模式之工厂模式简单工厂模式 简单工厂模式 看一个具体的需求 看一个披萨的项目 :要便于披萨种类的扩展,要便于维护 1)披萨的种类很多(比如GreekPizz、CheesePizz等) 2)披萨的制作有prepare、bake、cut、box 3)完成披萨店订购功能。 ...

不一样的花朵的博客 632

java设计模式之工厂设计模式

java设计模式之工厂设计模式 传统模式 看一个具体的需求 看一个披萨的项目:要便于披萨种类的扩展,要便于维护 1.披萨的种类很多(比如 GreekPizz、CheesePizz 等) 2.披萨的制作有 prepare,bake, cut, box 3.完成披萨店订购功能。 使用传统的方式来完成 首先创建一个pizza类 package com.wxit.factory.simplefactory; /** * @Author wj **/ //将Pizza类做成抽象 public abstract

青青子衿 189
上一篇: JAVA设计模式之 单列模式
下一篇: JAVA设计模式之 建造者模式
KILLBILLKILLING
博客等级 码龄8年 3粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值