Java23种设计模式的研究之一(工厂方法模式(Factory Method))

本文详细介绍了Java设计模式中的工厂方法模式,包括普通工厂模式、多个工厂方法模式和静态工厂方法模式。通过示例展示了不同模式的应用场景及优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java开发工作久了,难免对一些Java中的技术想要探究一番。现在就Java经典的23种设计模式倒腾一番。

         1、工厂方法模式:

在我们平时应用中其实工厂方法模式分为3种模式、

            1-1:普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:

 代码:(借鉴一个邮件发送类和短信发送类)

首先创建一个共同的接口:


然后创建其实现类

             

             

最后建造工厂类


  最后测试类:


测试结果:

输出:this is MaiSender

1-2 :多个工厂方法模式是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,如果我们要多创建一个对象类型,就必须去修改工厂类的源码,而多个工厂方法模式是提供多个工厂方法,分别创建对象。关系图

只需要改动我们的代码,改动下SendFactory类就行,如下:


测试类:


测试类结果输出:

this is MaiSender
=============================================
this is SmsSender

1-3 :静态工厂方法模式,想到这每次我们创建一个对象的时候都要先去创建一个工厂,然后再创建对象。为何不直接省去工厂实例,直接调用返回不同的对象。

修改SendFactory中的对象创建为静态方法


测试类的修改:


测试输出结果:

this is MaiSender
=============================================
this is SmsSender

总结:工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,还有就是如果新增一种对象创建,就会修改源码,这也违背了设计模式的六大原则之一(开闭原则-就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。),第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。后续在spring的源码中你也会发现大量的BeanFactory模式出现,为的就是加载生成不同的Bean对象。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值