[设计模式] ------ 简单工厂模式

本文深入讲解了简单工厂模式,一种常见的软件设计模式。通过实例演示了如何根据不同类型的输入创建不同的对象,实现加、减、乘、除等运算。讨论了模式的优缺点,并以Java.util.Calendar为例,展示了简单工厂模式在实际开发中的应用。

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

简单工厂模式

不同类型下创建对应的不同的对象,得到不同的结果,就叫简单生产模式

比如

定义一个接口,叫A,里面有方法a,返回int类型

类B1实现A接口,也实现a方法,里面做的是加法运算
类B2实现A接口,也实现a方法,里面做的是减法运算
类B3实现A接口,也实现a方法,里面做的是乘法运算
类B4实现A接口,也实现a方法,里面做的是除法运算

定义一个类叫SimpleFactory,里面属性是A,有个方法叫cal

伪代码如下:

Class SimpleFactory{
	private A a;
	public static int cal(int type){
		if(type == 1){
			a = new B1();
		}else if(){
			a = new B2();
		}else if(){
			a = new B3();
		}else if(){
			a = new B4();
		}
		return a.a();
	}
}

这样调用后,只要确定type等于几,比如要算减法,type=2,
那么只要使用SimpleFactory.cal(2),就能得到对于计算的答案
由于cal方法一般都做成静态方法,所以简单工厂模式,有时也叫静态工厂模式。

优缺点

简单工厂类的优点就是简单实用。
缺点就是代码耦合大,如果要新增一个类,就需要在工厂类中新增,这样就是违背了开放-封闭原则了。

源码应用

其实很多地方都用到了简单工厂模式,比如JDK源码中有个类java.util.Calendar。
我们直接看源码:

静态方法getInstance()
在这里插入图片描述
这个说明getInstance()应该是一个默认的方法,其实真正的方法,是有两个参数的,一个是时区,一个是地区
在这里插入图片描述
下面红框这个,就是根据不同的入参,返回了不同的Calendar的子类,就是简单工厂模式。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值