千家信息网

Java工厂模式是什么意思

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要介绍"Java工厂模式是什么意思",在日常操作中,相信很多人在Java工厂模式是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java工厂模式是什么
千家信息网最后更新 2025年12月03日Java工厂模式是什么意思

这篇文章主要介绍"Java工厂模式是什么意思",在日常操作中,相信很多人在Java工厂模式是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java工厂模式是什么意思"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

工厂模式:

设计模式是源于生活,人类社会生产从原始的集体生产、私有化、作坊、手工工厂、流水线工程一路发展过来,工厂生产模式成为效率最高的方式。

那么在软件设计中也参考了这种方式:

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 工厂模式让对象的使用者无需了解具体实现,只需要通过对象工厂直接拿过来用就行了。

Java构架师学习资料:Java构架师技术栈/高并发/高可用/高性能/源码解析

简单工厂模式:

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

工厂(WaterFactory)角色:

简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。

抽象产品(Water)角色:

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

具体产品(冰露、农夫山泉、怡宝)角色:

是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

优点:

工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象.通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责"消费"对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。

缺点:

由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

简单工厂模式代码示例:

package demo;/** * 饮用水抽象产品角色 * @author OuYang * */public interface Water {       /**        * 获取一个产品        * @return        */       public String getWater();      }------------------------------------package demo;/** * 冰露实现类 * @author OuYang * */public class IceDew implements Water{       public String getWater() {                           return "冰露纯净水";                    }      }--------------------------------------package demo;/** * 怡宝实现类 * @author OuYang * */public class SimpleFactory_Water {       public Water getWater(String brand) {              if(brand.equals("冰露")) {                     return new IceDew();              }              if(brand.equals("农夫山泉")) {                     return new NongFu();              }              if(brand.equals("怡宝")) {                     return new YiBao();              }              return null;       }}--------------------------------------------package simplefactory_demo;import demo.IceDew;import demo.SimpleFactory_Water;public class TestWater {       public static void main(String[] args) {                           //普通new模式              System.out.println(new IceDew().getWater());                           //简单的工厂生产模式(小作坊)              //用户本身不再需要了解生产过程,只需要结果              SimpleFactory_Water factory = new SimpleFactory_Water();              System.out.println(factory.getWater("农夫山泉").getWater());       }}

在Spring中,beanFactory就是对象工厂,配置 就相当于代码:

factory.getWater("农夫山泉")

当然,Spring的对象工厂远远没有这么简单。

工厂方法模式:

在简单工厂模式中,由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

很显然,工厂也应该抽象化,再去实现具体品牌的对象工厂,这样就可以在工厂实现类丰富更多的参数和功能。分工更细,可维修性也更高。

import SimpleFactory.Water;/** * 工厂模型 * @author OuYang * */public interface Factory {       //工厂的产品出口       Water getWater();}--------------------------------------------package methodfactory;import SimpleFactory.NongFu;import SimpleFactory.Water;/** * 农夫山泉生产工厂 * @author OuYang * */public class NongFuFactory implements Factory{       public Water getWater() {                           return new NongFu();       }}--------------------------------------------package methodfactory;package abstractfactory;import SimpleFactory.IceDew;import SimpleFactory.NongFu;import SimpleFactory.YiBao;/** * 测试类 * @author OuYang * */public class FactoryTest {       public static void main(String[] args) {              System.out.println(new YiBaoFactory().getWater().getWater());       }}

抽象工厂模式:

在工厂方法模式中,我们无需new各种各样的对象来使用,只需要new一个对象工厂即可获得我们想要的对象。

但是这样只是解决了功能聚集在同一个工厂的问题,解决了改需求带来的麻烦,但是我们仍然要new相应的对象工厂,程序的复杂度依然存在。

  • 创建抽象工厂,有公共属性和抽象方法。

  • 实现类中实现冰露、农夫、怡宝的生产工厂。

  • 这样既解决的代码的复杂性,又可以在工厂实现类中设置不同的参数。

/** * 抽象工厂 * @author OuYang * */public abstract class AbstractFactory  {             //公共属性和逻辑,容量       int volume;             //获取怡宝       public abstract YiBao getYiBao();       //获得冰露       public abstract IceDew getIecDew();       //获得农夫山泉       public abstract NongFu getNongFu();             }-------------------------------package abstractfactory;import SimpleFactory.IceDew;import SimpleFactory.NongFu;import SimpleFactory.YiBao;/** * 抽象工厂实现类 * @author OuYang * */public class WaterFactory extends AbstractFactory{       @Override       public YiBao getYiBao() {              //设置为1升              this.volume=1;              return new YiBao();       }       @Override       public IceDew getIecDew() {              //设置为2升              return new IceDew();       }       @Override       public NongFu getNongFu() {              //设置为3升              return new NongFu();       }}------------------------------------package simplefactory_demo;import abstractfactory.WaterFactory;/***测试类*/public class AbstractFactoryTest {       public static void main(String[] args) {                           WaterFactory factory = new WaterFactory();              System.out.println(factory.getIecDew().getWater());

到此,关于"Java工厂模式是什么意思"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

工厂 模式 对象 实例 产品 农夫 方法 逻辑 生产 山泉 农夫山泉 角色 学习 意思 代码 外界 更多 设计 不同 复杂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 枣庄智慧医养软件开发系统 香港服务器安全防护 数据库代码自动化 网络安全设备升级的请示 个人软件开发发展愿景 网络安全硕博论文 江西省网络安全应急指挥真题 关键岗位网络安全背景审查 如何制作mc 服务器 农安通用网络技术咨询口碑推荐 我的世界如何开互通服务器 共用一个ip地 网络安全 国家网络安全宣传周开场视频 网络安全教育日一图看懂 龙华区软件开发项目资助 数据库连不上怎么回事 梦三国老是服务器连接中断 表是数据库系统的什么 安卓的app开发软件开发 武汉小圆子互联网科技有限公司 数据库服务器中ha是什么 济南前锦网络技术有限公司 网络安全事业部总监任职要求 正在连接至服务器卡住不动 团购网站数据库三级项目 诛仙一销售数据库 如何导出一个数据库 软件开发的公司用的电脑很老 阿拉尔网络安全 数据库有哪些形式
0