简单工厂模式(SimpleFactoryModel)

今天来总结一下简单工厂模式,直接上个简单的类图吧。

在这里插入图片描述

从图中我们可以看到:
  1. 客户端如果想要一个 product1 ,它会给工厂说,我想要 1号产品 了你快看着办。
  2. 然后creator 也就是工厂就去车间给车间主任说,快给我生产一个 1 号产品。
  3. 然后车间主任就找了,最后一层层送回到客户端手中。
代码实现:
//接口类
public interface Iproduct {
	// 接口只要一个方法,每一个product都得实现这个方法
	public  void doit();
}

// 一号产品类
public class Product1 implements Iproduct {
	@Override
	public void doit() {
		System.out.println("创造product1成功!");
	}
}

// 二号产品类
public class Product2 implements Iproduct {
	@Override
	public void doit() {
		System.out.println("创造product2成功!");
	}
}

// 3号产品类
public class Product3 implements Iproduct {
	@Override
	public void doit() {
		System.out.println("创造product3成功!");
	}
}

// 工厂类
public class Factory {
	// 私有成员
	private Iproduct product = null;
	
	// 构造方法(判断客户端要几号产品)
	public Factory(int n){
		if(n == 1){
			product = new Product1(); 
		}else if(n == 2){
			product = new Product2();
		}else if(n == 3){
			product = new Product3();
		}else {
			System.out.println("没有此产品!");
		}
	}
	
	// 调用方法
	void send(){
		if(product != null){
			product.doit();
		}
	}
}

// 客户端
public class Cilent {
	// 主函数调用
	public static void main(String[] args) {
		Factory factory = new Factory(4); // 客户端想要一号产品了
		factory.send(); // 工厂去做
	}
}

简单工厂模式的优点:
  1. 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建对象的责任,而仅仅“消费”产品。
  2. 简单工厂模式通过这种方式实现了对责任的分割,它提供了专门的工厂类用于创建对象。
  3. 客户端无须知道所创建的具体产品的类名,只需要直到具体产品所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。简单来说就是:对于客户端来说,接口统一,只要传几个代表性的参数就可以调到想要的方法。
简单工厂模式的缺点:

如果要加一个新的 Product 就要修改creator 的代码,违反了开闭原则。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值