Java设计模式--工厂模式

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

工厂模式种类:

一、简单工厂模式:不利于生成系列产品;


二、工厂方法模式:又称为多形性工厂;


三、抽象工厂模式:称为工具箱,产生产品族,但不利于产生新的产品;


简单工厂的类图:


①汽车接口:

public class Audi implements Car{
	private String name="Audi" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Audi();
	}
}

public class Benz implements Car{
	private String name="Benz" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Benz();
	}
}

public class Bmw implements Car{
	private String name="Bmw" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Bmw();
	}
}

public interface Car {
	public Car get();
}

public class CarFactory {
    public static Car make(Car car){
        return car.get();
    }
}

public class ForS {
	  public static Car take(String name){
	        if("Bmw".equals(name)){
	            return CarFactory.make(new Bmw());
	        }else if("Benz".equals(name)){
	            return CarFactory.make(new Benz());
	        }else if("Audi".equals(name)){
	            return CarFactory.make(new Audi());
	        }else{
	            System.out.println("暂时没Car");
	            return null;
	        }
	  }
	  
		public static void main(String[] args) {
		     System.out.println("进入汽车店:");
		       System.out.println(take("Bmw"));
		       System.out.println(take("Benz"));
		       System.out.println(take("Audi"));
		}
}

B 工厂方法模式:解决简单工厂模式中的麻烦的逻辑判断,反射配合xml也可决绝这样的问题,此时学习工厂方法模式的优点。


public class Audi implements Car{
	private String name="Audi" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Audi();
	}
}

public class AudiFactory implements CarFactory{

	@Override
	public Car make() {
		return new Bmw();
	}


}

public class Benz implements Car{
	private String name="Benz" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Benz();
	}
}

public class BenzFactory implements CarFactory{

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


}

public class Bmw implements Car{
	private String name="Bmw" ;
	@Override
	public String toString() {
		
		return "name == "+name;
	}
	@Override
	public Car get() {
		return new Bmw();
	}
}

public class BmwFactory implements CarFactory{

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

public interface Car {
	public Car get();
}

public interface CarFactory {
    public Car make();
}


public class ForS {
	  public static Car take(CarFactory factory){
		  return factory.make();
	  }
	  
		public static void main(String[] args) {
		     System.out.println("进入汽车店:");
		       System.out.println(take(new BmwFactory()));
		       System.out.println(take(new BenzFactory()));
		       System.out.println(take(new AudiFactory()));
		}
}


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

相关推荐

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

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

ANGEL CITY 3197

Java设计模式-工厂模式

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

m0_62946761的博客 6566

Halcon深度学习2 -- 标注工具Deep Learning Tool下载安装

Deep Learning Tool为Halcon开发公司MVTec官方提供的一款标注工具: 标记培训数据是任何深度学习应用程序的关键的第一步。 当涉及到应用程序的性能,准确性和健壮性时,此标记数据的质量起着重要作用。 借助MVTec深度学习工具,我们正在为HALCON用户创建全面流畅的深度学习体验。 通过开发我们自己的解决方案,我们确保可以将其输出无缝集成到HALCON中。 该应用程序还使我们能够吸收在开发HALCON深度学习算法时获得的丰富经验和专业知识,而该算法自然也涉及很多标签! Deep.

fengyingv的博客 1万+

Java设计模式——工厂模式

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

weixin_56032340的博客 8632

电力电子课设救星:用Simulink实现Buck变换器双闭环控制(PID调参技巧)

本文是电力电子课程设计的实用指南,详细讲解如何利用Simulink仿真平台实现Buck变换器的电压电流双闭环控制。文章核心聚焦于PID参数整定的实战技巧,提供了从手动调试口诀到MATLAB脚本自动优化的完整方案,旨在帮助学生高效完成课设,深入理解闭环控制原理并生成专业报告。

weixin_29179311的博客 296

ROS Navigation global_planner框架解析

ROS Navigation global_planner框架解析主要讲一下我看源码总结的框架,如果大家跟着这个框架看源码的话可能会看的比较快。主要讲解global_planner关键配置参数含义及关键函数Astar,Dijkstra,QuadraticCalculator::calculatePotential,PotentialCalculator::calculatePotential,GridPath::getPath,GradientPath::getPath.

Jeff_Lee_的博客 4694

Java设计模式之工厂模式

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

m0_68821222的博客 1015

AutoSAR实战:手把手教你配置PNC(Partial Network Cluster)实现精准休眠与唤醒

本文详细介绍了如何在AutoSAR中配置PNC(Partial Network Cluster)实现精准休眠与唤醒,通过DaVinci Configurator工具逐步指导,结合ComM模块的协同调试,优化车载电子系统的能耗管理。文章包含实战步骤、常见错误排查及功耗优化数据,适合汽车电子开发工程师参考。

weixin_33725239的博客 466

java设计模式二、工厂

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

2301_79028279的博客 1454

UNet 改进(3):CBAM模块的融合创新

CBAM模块可以灵活地添加到网络的不同位置,本实现选择在初始卷积后添加,既提升了性能又不过度增加计算负担。UNet_CBAM通过集成注意力机制,使网络能够自动聚焦于图像中最相关的区域和特征通道,从而提升了分割性能。然而,传统的UNet在处理复杂场景时,对所有空间位置和通道特征一视同仁,这可能导致对重要特征的关注不足。在实际应用中,特别是在医学图像分析等需要精确分割的场景中,UNet_CBAM展现出了优异的性能。:CBAM添加的计算量很小,却能带来显著的性能提升,具有很好的性价比。

2401_82355416的博客 1645

【AI面试】 Python 的装饰器

Python装饰器是一种高阶函数,用于在不修改原函数代码的情况下增强其功能。它通过@语法糖接收目标函数作为参数,并返回一个包含额外逻辑(如日志、缓存、权限验证等)的新函数。装饰器的核心价值在于代码复用和解耦,符合开闭原则,典型应用包括性能分析、权限控制等场景。例如,@timer_decorator可自动为函数添加耗时统计功能。本质上,@decorator等价于func = decorator(func),实际调用的是装饰器返回的包装函数。进阶技巧包括使用@functools.wraps保留原函数元信息。装饰

钱多多先森 184

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

设计模式之工厂模式

季鸢的博客 1093

Zemax与Matlab交互:双胶合优化详细流程

Zemax与Matlab交互:双胶合优化详细流程

weixin_72050316的博客 630

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

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

user340的博客 2521

基于Simulink的电源纹波抑制仿真

电源纹波(Power Supply Ripple)是指直流电源输出中存在的交流分量。纹波的存在会导致电压波动,进而影响负载设备的性能和寿命。为了确保高质量的电源输出,通常需要设计有效的滤波电路来抑制纹波。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电源纹波抑制方案。本教程将详细介绍如何使用 Simulink 进行电源纹波抑制的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行电源纹波抑制的仿真实例。背景介绍:理解电源纹波及其对电力电子系统的影响。仿真建模过程。

xiaoheshang_123的博客 514

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

尹煜的博客 1506

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

weixin_28938701的博客 174

图解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

03-JAVA设计模式-工厂模式详解

工厂设计模式是一种创建型设计模式,它提供了一种封装对象创建过程的机制,将对象的创建与使用分离。这种设计模式允许我们在不修改客户端代码的情况下引入新的对象类型。在Java中,工厂设计模式主要有三种形式:简单工厂模式、工厂方法模式和抽象工厂模式。

丨Anna丨的博客 1322
上一篇: 自定义ImageLoader
下一篇: 代码重构
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值