java工厂类介绍(JAVA工厂)

本篇文章给大家谈谈java工厂类介绍,以及JAVA工厂对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java 工厂模式概述2、什么是Java的工厂模式?3、java中 什么是工厂4、java工厂类怎么实现5、java 工厂类,是什么会事?6、JAVA中的工场类有什么用,需要什么时候创建

java 工厂模式概述

工厂模式按照《Java与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。所以我建议在这种情况下使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类:即对于产品树上类似的种类(一般是树的叶子中互为兄弟的)使用简单工厂模式来实现。来看看抽象工厂模式的各个角色(和工厂方法的如出一辙): 抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。

工厂模式有三个参与者,抽象产品(Product)、工厂(Creator)和具体产品(ConcreteProduct)。客户只会看到工厂和抽象产品。

public interface Product{

public String getName();

}

public class ConcreteProduct implements Product{

public String getName(){

return “产品1”;

}

}

public class Creator{

public static Product create1(){

return new ConcreteProduct();

}

}

工厂模式的作用在于将创建具体产品的方法由工厂类控制,客户只需要知道产品的抽象类型

java工厂类介绍(JAVA工厂)

什么是Java的工厂模式?

factory模式不需要建立什么包,完全得靠你对factory模式的理解,工厂模式基本上应该是体现了一个多态的概念,用户只关心结果,而不需要关心其具体过程…

工厂模式有三个参与者,抽象产品(Product)、工厂(Creator)和具体产品(ConcreteProduct)。客户只会看到工厂和抽象产品。

public interface Product{

public String getName();

}

public class ConcreteProduct implements Product{

public String getName(){

return “产品1”;

}

}

public class Creator{

public static Product create1(){

return new ConcreteProduct();

}

}

工厂模式的作用在于将创建具体产品的方法由工厂类控制,客户只需要知道产品的抽象类型

java中 什么是工厂

工厂是一种设计模式!

为何使用?

工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。

为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。

我们以类Sample为例, 如果我们要创建Sample的实例对象:

Sample sample=new Sample();

可是,实际情况是,通常我们都要在创建sample实例时做点初始化的工作,比如赋值 查询数据库等。

首先,我们想到的是,可以使用Sample的构造函数,这样生成实例就写成:

Sample sample=new Sample(参数);

但是,如果创建sample实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数中,那你的代码很难看了(就需要Refactor重整)。

为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多,将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于Java 面向对象的原则,面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再 “封装”起来(减少段和段之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。

在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从Sample的构造函数中分离出去。

这时我们就需要Factory工厂模式来生成对象了,不能再用上面简单new Sample(参数)。还有,如果Sample有个继承如MySample, 按照面向接口编程,我们需要将Sample抽象成一个接口.现在Sample是接口,有两个子类MySample 和HisSample .我们要实例化他们时,如下:

Sample mysample=new MySample();

Sample hissample=new HisSample();

随着项目的深入,Sample可能还会”生出很多儿子出来”, 那么我们要对这些儿子一个个实例化,更糟糕的是,可能还要对以前的代码进行修改:加入后来生出儿子的实例.这在传统程序中是无法避免的.

但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了.

工厂方法

你会建立一个专门生产Sample实例的工厂:

public class Factory{

public static Sample creator(int which){

//getClass 产生Sample 一般可使用动态类装载装入类。

if (which==1)

return new SampleA();

else if (which==2)

return new SampleB();

}

}

那么在你的程序中,如果要实例化Sample时.就使用

Sample sampleA=Factory.creator(1);

这样,在整个就不涉及到 Sample的具体子类,达到封装效果,也就减少错误修改的机会,这个原理可以用很通俗的话来比喻:就是具体事情做得越多,越容易范错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,范错误可能性就越少.好象我们从编程序中也能悟出人生道理?呵呵.

使用工厂方法 要注意几个角色,首先你要定义产品接口,如上面的Sample,产品接口下有Sample接口的实现类,如SampleA,其次要有一个factory类,用来生成产品Sample,如下图,最右边是生产的对象Sample:

进一步稍微复杂一点,就是在工厂类上进行拓展,工厂类也有继承它的实现类concreteFactory了。

抽象工厂

工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory).

这两个模式区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象Sample,如果我们还有新的产品接口Sample2.

这里假设:Sample有两个concrete类SampleA和SamleB,而Sample2也有两个concrete类Sample2A和SampleB2

那么,我们就将上例中Factory变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的Factory拓展成抽象工厂:

public abstract class Factory{

public abstract Sample creator();

public abstract Sample2 creator(String name);

}

public class SimpleFactory extends Factory{

public Sample creator(){

………

return new SampleA

}

public Sample2 creator(String name){

………

return new Sample2A

}

}

public class BombFactory extends Factory{

public Sample creator(){

……

return new SampleB

}

public Sample2 creator(String name){

……

return new Sample2B

}

}

从上面看到两个工厂各自生产出一套Sample和Sample2,也许你会疑问,为什么我不可以使用两个工厂方法来分别生产Sample和Sample2?

抽象工厂还有另外一个关键要点,是因为 SimpleFactory内,生产Sample和生产Sample2的方法之间有一定联系,所以才要将这两个方法捆绑在一个类中,这个工厂类有其本身特征,也许制造过程是统一的,比如:制造工艺比较简单,所以名称叫SimpleFactory。

在实际应用中,工厂方法用得比较多一些,而且是和动态类装入器组合在一起应用。

java工厂类怎么实现

工厂方法模式分为三种:

1、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建

2、多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。

3、静态工厂方法模式,将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

具体代码请参考:java设计模式   第三大节

如果对您有帮助,请及时采纳谢谢

java 工厂类,是什么会事?

23种设计模式中最简单的一种,工厂模式,说一个简单工厂吧,在java API中,有一个DataFormat类,你可以找到很多static工厂方法,他们都返回一个自己的实例,也就是返回DataFormat,而DataFormat是一个抽象类,他是不能被实例化的,所以,他返回的实际上是他的子类,例如SimpleDataFormat类,这样做的好处是细节隐藏并且提供扩展性。

在你的问题补充中,关于java网站的好坏,我没有太明白你的意思,提问的更明白,我回答的就更详细。

你可以点击我的百度个人档案,加入的QQ群,我们一起研究java相关内容,祝你好运。

JAVA中的工场类有什么用,需要什么时候创建

这个东西需要专门讲讲,我先留个标记,然后好好写一个够重量的给你

首先,我要说明,以下的东西都是我自己的理解,如果有错漏,欢迎指出

——————分隔线—————————————-

首先,工厂类不是一个类,我这么说也许有些不清楚,但是这句话的确不太好表达,

它是一种设计模式,利用接口,工厂化的方法将实例化延迟到了子类的时候,

通俗点说,这个类在运行时根据客户的选择条件动态实例化相关的类,而不是在编写

代码的时候就写死,这种设计模式我不多说,相信你也明白它的优势在哪里。

先回答你得两个问题

———————————分隔线———————————-

为什么用

用最直白的话来说,通常来讲我们的类实例化的时候用一个关键词new,而还有些类

实例化的时候用的不是new而是getinstance,这种就是所谓的工厂类用的。作用的话我前面说了,

它是用来增加灵活性的,传统的new做一个登陆的简单逻辑大概如下(省略部分代码)

class Login {  

        private User user;  

          

        public Login() {  

            user = new User(); //创建对象,假设这个User是一个定义好的类

        }  

          

        public void execute() {  

            //别的代码  

            user.findUserById(); //使用对象中的方法查找有没有这个用户  

            //别的代码  

        }  

    }

这时候我们看到,Login做了两个事情,第一创建user,第二使用user,现在login和

user紧密结合在一起了,这就是所谓的耦合,接下来我脑袋一热有了一个新想法,我这个user想换成它的子类了

叫childuser————–好吧有点俗—————,这个时候发生了一件让我恼火的事情,那就是我需要修改源码才能实现

所以我很火大,想要换一种灵活点的方式,于是我想到了,我把创建user这个活从login移除去,这样作为login来说就关注怎么用就行了,

就好比开车的不一定要会造车,工厂造车就行了!~

于是我这样想的,我就想造汽车这个活搞一个工厂去做吧,于是一个特殊的类诞生了,那就是工厂类,

例子我就不用举了,我相信楼主一定已经有了

有了这个类我发现,太方便了,然后我还发现了一个好处这种实现可以防止用来实例化一个类的数据和代码在多个类中到处都是,可以将有关创建的知识搬移到一个工厂类中,显得代码又整洁有规律,回头修改的时候也好改,你说是吧~  

上面这些东西只是浅显的,更深的东西楼主就要靠自己了,单纯的看没有结果,一定要练习。

—————————–分隔线————————————-

什么时候创建

这个问题问的我就有点纠结了,首先你说都什么东西需要工厂呢?

我总结下,我觉得,现实中,需求量大,工艺复杂,需要工厂,对吧。

所以代码里,需求量大,也就是多处都会用到的类,工厂吧

工艺复杂,也就是使用起来很麻烦,那么用工厂吧

当然

还是那句话,这些浅显的东西我可以说给你,深度的还是要靠自己啊

—————————–回答分隔线————————————

上面那些用来回答你的问题的,我先贴上来,免得你觉得我是骗子,然后我再继续给你写写这个东西,看看能不能延伸一下

————————–继续说———————————

首先是简单工厂模式

什么是简单工厂模式

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

这段来自百度百科,我来解释下,对于这一段你只要理解,简单工厂模式中,由工厂的判定逻辑决定创建哪一种实例。

 这种模式的优点在于,可以免除调用者直接创建对象这个责任,实现了责任的分割,以登陆为例,假如说我以后有新的登录方式,比如域认证,那么我只要修改这个工厂类就好,不会对调用者,或者叫做客户做任何修改

这个模式的缺点在于,责任过于集中,因为所有的创建逻辑都在这了,玩意他有一天不爽,要求放假,那么不幸的是你不得不让所有的“人”陪“他”一起放假。。。后果你懂的

然后说说工厂方法模式

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

还是来自百度,我来解释,就是跟简单的对比相当于多了一个经理,他不干活,但是他指挥干活,有点中枢的赶脚,来一句远点的,有点web里面的mvc的controller的意思

然后这个经理就是那个所谓的抽象工厂,于是有了一个人管着之后业务运行流畅了~~

p.s. 题外话,代码也是一个守(fa)法(jian)的主,非得有人管着才能干好活。。。。

再然后是抽象工厂模式

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。

以上依然来自百科,我来解释,举个例子,你去电子城买一台组装机,于是你首先确定了cpu品牌,intel,然后所有接受intel芯片的主板不管cpu具体型号,那么都应该可以接受的事吧,而intel的芯片就构成了一个产品族,于是卖家挑出了一些intel的芯片给你,这些都是符合标准的。然后就是具体的找出一款芯片把它“实例化(就是掏钱咯~~)”

关于抽象工厂模式最早的一些东西,我再网上帮你摘录了一些东西,来自百度文库,

抽象工厂模式的起源或者最早的应用,是用于创建分属于不同操作系统的视窗构建。比如:命令按键(Button)与文字框(Text)都是视窗构建,在UNIX操作系统的视窗环境和Windows操作系统的视窗环境中,这两个构建有不同的本地实现,它们的细节有所不同。

  在每一个操作系统中,都有一个视窗构建组成的构建家族。在这里就是Button和Text组成的产品族。而每一个视窗构件都构成自己的等级结构,由一个抽象角色给出抽象的功能描述,而由具体子类给出不同操作系统下的具体实现。  

     系统对产品对象的创建需求由一个工程的等级结构满足,其中有两个具体工程角色,即UnixFactory和WindowsFactory。 UnixFactory对象负责创建Unix产品族中的产品,而WindowsFactory对象负责创建Windows产品族中的产品。这就是抽象工厂 模式的应用.  

  显然,一个系统只能够在某一个操作系统的视窗环境下运行,而不能同时在不同的操作系统上运行。所以,系统实际上只能消费属于同一个产品族的产品。   在现代的应用中,抽象工厂模式的使用范围已经大大扩大了,不再要求系统只能消费某一个产品族了。因此,可以不必理会前面所提到的原始用意。

恩,越说越多了,就到这吧~  如果你喜欢设计模式可以去看看java设计模式

——————————————————-

最后希望对你有帮助

关于java工厂类介绍和JAVA工厂的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 23:11:29
下一篇 2024年4月3日 23:20:43

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3400
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4600
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4100
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    3900
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4600
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4700
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信