工厂模式(初学)

工厂模式

1、简单工厂模式

  • 是一种创建型设计模式,旨在通过一个工厂类(简单工厂)来封装对象的实例化过程

运算类

java 复制代码
public class Operation {   //这个是父类
	private double num1;  //运算器中的两个值
	private double num2;
	public double getNum1() {
		return num1;
	}
	public void setNum1(double num1) {
		this.num1 = num1;
	}
	public double getNum2() {
		return num2;
	}
	public void setNum2(double num2) {
		this.num2 = num2;
	}
	
	public double getResult() {  //用于子类获取结果
		double result = 0;
		return result;
	}
}

加减乘类

java 复制代码
public class OperationAdd extends Operation{  //加法

	@Override
	public double getResult() {
		double result = 0;
		result = super.getNum1() + super.getNum2();  //从父类获取值
		return result;
	}
}
java 复制代码
public class OperationSub extends Operation{ //减法

	@Override
	public double getResult() { 
		double result = 0;
		result = super.getNum1() - super.getNum2();  //从父类获取值
		return result;
	}  
}
java 复制代码
public class OperationMul extends Operation{//乘法

	@Override
	public double getResult() {
		double result = 0;
		result = super.getNum1() * super.getNum2();  //从父类获取值
		return result;
	}  
}

工厂类

java 复制代码
public class OperationFactory {
	
	public static Operation createOperation(String operate) {    //这个是个工厂类
		
		Operation op = null;   //这个为null是因为要通过符号来确定子类对象
		switch (operate) {     //判断符号,实例合适的对象
		case "+":
			op = new OperationAdd();
			break;
		case "-":
			op = new OperationSub();
			break;
		case "*":
			op = new OperationMul();
			break;
		}
		return op;
	}
}

Main

java 复制代码
public class Main {
	public static void main(String[] args) {
		Operation op = new OperationAdd();
		op = OperationFactory.createOperation("*");   //只要输出合适的计算符号,工厂类就会实例出该有的对象
		op.setNum1(1);
		op.setNum2(2);
		double rusult = op.getResult();
		System.out.println(rusult);
	}
}

2、工厂模式实现

相关推荐
tedcloud1231 分钟前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
星间都市山脉2 分钟前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
深入云栈7 分钟前
Netty 4.2.x 源码深度解析 (十三):Epoll 传输 —— Linux 高性能 IO 的 Netty 实现
java·后端
ynchyong8 分钟前
Linux nohup 后台服务合并标准错误输出到一个文件
java·linux·运维
用户31268748772010 分钟前
Lombok 的 @Data 到底怎么工作的?Java 注解处理器实战全链路拆解
java
Tairitsu_H20 分钟前
[C++] C++11 Lambda与包装器深度解析
开发语言·c++·c++11·lambda·包装器
傲世仙尊28 分钟前
从磁盘硬件到Ext文件系统-Linux磁盘级文件系统学习笔记
linux·运维·服务器·开发语言·c++
小羊没烦恼!1 小时前
Memory 记忆设计讨论:为什么 Agent Memory 不能只靠向量数据库?
java·开发语言·windows·算法·c#
天远API1 小时前
零信任架构实战:基于天远单人婚姻查询构建自动化联合贷款审计网关
java·人工智能·架构·自动化
九皇叔叔1 小时前
从本地事务到分布式事务
java·分布式·分布式事务·cap·base