设计模式学习笔记之工厂模式

本文通过一个加法操作的具体实例,详细介绍了工厂模式的概念及其与简单工厂模式的区别。工厂模式定义了一个创建对象的接口,并由子类决定实例化哪一个类。

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

工厂模式是提供了创建了对象的接口,将具体创建什么对象延迟到子类完成。

下面是工厂模式的实例:

有一个操作类的抽象类:

package com.DesignPolicyLearn.Factory;
/*
 * author:Tammy Pi
 * function:操作的抽象类
 */
public abstract class Operation<T> {

	public abstract T operation(T t1,T t2);
}

然后有一个加法类继承至操作类:

package com.DesignPolicyLearn.Factory;
/*
 * author:Tammy Pi
 * function:加法操作的类
 */
public class AddOperation extends Operation {

	@Override
	public Object operation(Object t1, Object t2) {
		
		//处理int类型
		if(t1 instanceof Integer && t2 instanceof Integer){
			
			return Integer.parseInt(String.valueOf(t1))+Integer.parseInt(String.valueOf(t2));
		}
		return null;
	}

然后有一个工厂的接口:

package com.DesignPolicyLearn.Factory;
/*
 * author:Tammy Pi
 * function:工厂接口
 */
public interface IFactory {

	public Operation getOpeartion();
}

然后有一个加法工厂,用于创建加法操作类:

package com.DesignPolicyLearn.Factory;
/*
 * author:Tammy Pi
 * function:加法工厂
 */
public class AddFactory implements IFactory{

	@Override
	public Operation getOpeartion() {
		
		return new AddOperation();
	}
}

一个用于测试的类:

package com.DesignPolicyLearn.Factory;
/*
 * author:Tammy Pi
 * function:用于测试的类
 */
public class Main {

	public static void main(String[] args){
		
		IFactory factory = new AddFactory();
		Operation add = factory.getOpeartion();
		int result = (Integer) add.operation(1,2);
		System.out.println("result is :"+result);
	}
}

可以看到,工厂类和简单工厂类的区别是,如果是简单工厂模式,应该就是一个Factory,根据用户传入的参数,返回不同的Operation;而工厂模式,则提供的是创建Operation的接口,而将创建神马Operation交给实现类去完成。虽然暂时看不到工厂模式的好处,但存在即是合理的,估计这个模式也有它用的情况吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值