简单工厂模式( Simple Factory Pattern )

news/2024/10/7 22:56:31
简单工厂模式(Simple Factory Pattern),在工厂类中对象决定创建出哪一种产品类的实例。这些产品类都实现了相同的接口,或者继承了相同的父类。

结构图

  • Factory工厂角色):它是核心,负责实现创建所有实例的内部逻辑。在工厂类中,提供了一个静态方法,可以直接被外界直接调用,以创建具体产品对象。
  • Product抽象产品角色):具体产品对象的父类或者接口,具体产品对象都是其子类对象。
  • ConcreteProduct具体产品类):它是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

简单工厂代码

抽象产品角色

public abstract class Operation {/*** 获取两个数运算后的值** @param numA 第一个数* @param numB 第二个数* @return 结果*/public abstract double getResult(double numA, double numB);
}

具体产品类,包括加法、减法、乘法、除法四个运算的具体实现

public class Add extends Operation {@Overridepublic double getResult(double numA, double numB) {return numA + numB;}
}
public class Sub extends Operation {@Overridepublic double getResult(double numA, double numB) {return numA - numB;}
}
public class Mul extends Operation {@Overridepublic double getResult(double numA, double numB) {return numA * numB;}
}
public class Div extends Operation {@Overridepublic double getResult(double numA, double numB) {if (numB == 0) {System.out.println("除数不能为0");}return numA / numB;}
}

工厂类

public class OperationFactory {public static Operation createOperation(String operate) {Operation operation = null;switch (operate) {case "+":operation = new Add();break;case "-":operation = new Sub();break;case "*":operation = new Mul();break;case "/":operation = new Div();break;}return operation;}
}

客户端

class Client {public static void main(String[] args) {Operation operation = OperationFactory.createOperation("+");operation.getResult(1, 1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/42571.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

VLAN技术和VLAN间路由

VLAN技术和VLAN间路由 VLAN技术:交换机分割广播域的技术。 VLAN:Virtual LAN 虚拟局域网。 *这里把交换机的物理接口称为端口。 VLAN技术 一、VLAN概述: 1.VLAN本质:逻辑独立的IP子网 通过“路由”设备: 第三层交换机 进行通信 2.优点: 增加网络部署的灵活性(管理员可以…

Java JVM——10.对象实例化内存布局与访问定位

对象实例化对象创建方式★ new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法。★ Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器。★ Constructor的newInstance(Xxx):反射的方式,可以调用空参的,或者带参的…

利用perf进行性能分析

对进程进行采集,采集后会在当前目录下生成一个perf.data文件 perf record -g -e cpu-clock --call-graph dwarf [-t 线程id] [-p 进程id]这里只针对cpu时间进行了采样,通过perf list命令还可以看到更多采样事件。简单分析 perf report除此之外还可以把perf.data转为火焰图,具…

win10笔记本网络连接不上,右下角网络设置出现红色叉叉,列表找不到wifi。怎么办?

win+r弹出控制台输入cmd回车,输入services.msc,回车。在弹出的【服务】窗口中拖动滑动按钮一直找,找到Wired AutoConfig以及WLAN AutoConfig以及WWLAN AutoConfig,对这三个分别依次点击启动此服务(如果已经是启动的了,那就点击重启动。),然后也右键--属性将启动类型改为…

ch3 不确定性和风险

不确定性和风险重点阿莱悖论(独立性) 冯诺依曼公式关键 了解奈特关于不确定性的研究及其基本结论; 了解行为经济学对时间不确定性的分析,知道“双曲贴现”的概念并运 用该理论解释相关的经济现象; 熟悉期望效用理论,并能运用期望效用函数测度风险, 掌握风险升水等重要概念…

第4-6次OOP作业总结

一、前言 1.第四次作业(答题判题程序4) 这次作业题目在原先的题型类型上新增了多选题和填空题,考虑到和原来的题目具有相同的属性,我果断选择使用当时刚学的继承来描述这两种新题型信息,但是新题型的分数计算比较复杂,只好多用几个if语句来加强判断了。新增的多名同学多张卷…

OOP第二阶段题集总结

一.前言知识点:考察继承和多态为多,其中还涉及迭代器的使用,在每个题集中都有一个综合性题目设计多方面知识点考试,有List类和HashMap的使用以及正则表达式的运用,并且注重考查设计,理解类与类之间的关系进行合理设计,其中也要遵循我们所学的单一职责,开闭原则,迪米特…