前言:
眼前同学们对“工厂模式java设计模式”大概比较关注,大家都想要分析一些“工厂模式java设计模式”的相关知识。那么小编在网上收集了一些关于“工厂模式java设计模式””的相关内容,希望你们能喜欢,朋友们一起来了解一下吧!《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。
我们说对象的产生是一个耗时和占用空间的过程,可以想象专门生产对象的工厂,这时候我们用到工厂设计模式。
1、简单的工厂
比如生产车的工厂,其接口如下:
public interface ICar {
public void run();
}
我们分别有Benz车和Ford车,代码如下:
public class Benz implements ICar {
public void run(){
System.out.println("Benz开始启动了。。。。。");
}
}
public class Ford implements ICar {
public void run(){
System.out.println("Ford开始启动了。。。。。");
}
}
那么生产车的工厂为:
public class CarFactory {
public static ICar getFordInstance()
{
return new Ford();
}
public static ICar getBenzInstance()
{
return new Benz();
}
}
其应用如下:
public class FactoryDemo01 {
public static void main(String[] args) {
ICar c1=CarFactory.getBenzInstance();
c1.run();
ICar c2=CarFactory.getFordInstance();
c2.run();
}
}
很显然,每生产个新车CarFactory必须新增加个方法
2、工厂方法
上述代码将工厂方法改进后如下:
public class CarFactory {
public static ICar getCarInstance(String type){
ICar c=null;
if("Benz".equals(type)){
c=new Benz();
}
if("Ford".equals(type)){
c=new Ford();
}
return c;
}
}
public class FactoryDemo02 {
public static void main(String[] args) {
ICar c=CarFactory.getCarInstance("Benz");
if(c!=null){
c.run();
}else{
System.out.println("造不了这种汽车。。。");
}
}
}
这样的话只有一个获取实例的方法,而不必每新增个车的对象就增加个方法,但是每新增个车的对象必须新增个“ if”
3、使用反射定制实例
使用Java的反射机制,改进后的工厂类如下:
package sample3;
import com.ICar;
public class CarFactory {
public static ICar getCarInstance(String type){
ICar c=null;
try {
//利用反射得到汽车类型
c=(ICar)Class.forName("sample3."+type).newInstance(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
}
对比三个实例:
实例一,虽然实现了简单工厂,但每次只能得到一种汽车,如果我们想换一种,就得修改工厂,太不方便
而实例二则改变了这种情况,便得我们可以按照我们的需要更换汽车,但我们所更换的汽车必须是实现类中有的,如果我们想要增加一种汽车的时候,我们还是得更改工厂
实例三利用反射机制,得到汽车类型,这样当我们需要增加一种新的汽车时,就无需要再修改工厂,而只需要增加要实现的类即可。也就是说要增加什么样的汽车直接增加这个汽车的类即可,而无需改变工厂。从而达到了工厂分离的效果
《大数据和人工智能交流》的宗旨
1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。
2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。
3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。
根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。
根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。
标签: #工厂模式java设计模式 #java中工厂设计模式