什么是工厂模式

时间:2024-09-19 15:45:13编辑:阿奇

工厂模式的好处

  工厂模式是我们最常用的实例化对象模式了,工厂模式在Java程序系统可以说是随处可见。它的好处有:

  1、工厂模式可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任。

  2、客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量。

  3、通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。


为什么要使用工厂模式

问题一:为什么要使用工厂模式? 工厂这个模式它可以隐藏函数的具体实现,并且更加具有封装性,更加的面向对象,这些东西在基耽的编写小程序上并体现不出什么优越性,但在一个大项目中,就显得很重要了,
打个比方就像你如果说只有两三本书,你不需要什么归类放着,但你如果有一个图书管那么多书的话,放书就要有一定的规章,章法,这样就好管理,变更,查找

问题二:为什么要用简单工厂模式 保证代码的可复用,各个子类完全分离,避免了更高代码无意中把原来好的源代码改错,对于开发公司来说,个人自用负责自己对应的子类,就行了,公司也不用把别的子类给你,
===============
如果现在公司要求你为公司的薪资管理系统做维护,原来只有技术人员(月薪) ,市场销售人员(底薪+提成),经理(年薪+股份)三种运算算法,现在要增加 *** 工作人员的(时薪)算法,但按照前面的程序写法,公司就必须要把包含有的原三种算法的运算类给你,让你修改,你如果心中小算盘一打,‘TMD,公司给我的工资这么低,我真是郁闷,这会有机会了’,于是你除了增加了 *** 算法以外,在技术人员(月薪)算法中写了一句
if (员工是自己)
{
salary = salary * 1.1;
}
那就意味着,你的月薪每月都会增加10%(小心被抓去坐牢),本来是让你加一个功能,却使得原有的运行良好的功能代码产生了变化,这个风险太大了。我们应该把加减乘除等运算分离,修改其中一个不影响另外的几个,增加运算算法也不影响其它代码”
这时候就需要用到 简单工厂模式了

问题三:java里使用工厂模式到底有什么好处? 如果有许多地方都需要生成A的对象,那么你需要写很多A a=new A()。
如果需要修改的话,你要修改许多地方。
但是如果用工厂模式,你只需要修改工厂代码。其他地方引用工厂,可以做到只修改一个地方,其他代码都不动,就是解耦了。

问题四:使用工厂模式对于设计软件有什么好处? 工厂模式为什么叫做工厂模式? 在满足一定开闭原则的基础之上,使得软件具有一定的封装性和层次结构性,以及各类完成任务的单一性;
之所以叫做工厂模式,其实就是想我们在开发软件的时候联系到社会上的实际情况,社会上的工业流程大多也遵照工厂模式!
上述均个人理解..

问题五:为什么要在JAVA工厂模式中使用静态方法 百度了一下,发现百度了一堆垃圾,根本没有找到自己想要的答案。后来去Stack Overflow,果然找到了相关的问题。因为是英文的,所以翻译过来并综合整理了一下。 为什么要在工厂模式中使用静态方法 工厂模式是一种封装对象创建的方法。如果不使用工厂模式,你就需要直接使用构造方法来创建对象:Foo x = new Foo() 使用工厂模式,就可以取而代之的调用工厂方法:Foo x = Foo.create() 工厂类的构造方法被标记为private,所以构造方法除了在类的内部被调用以外就不能够被访问。工厂类的其他方法被标记为static,这样就不需要在调用该方法之前必须首先拥有一个该类的对象。 使用工厂模式有一些好处。

问题六:有必要所有类都用简单工厂模式创建吗 简单工厂模式一般用在继承类比较多的情况下,只要声明其父类,子类通过工厂就可以创建出来
而客户端就不用关心具体子类怎么实现了
如果你的子唬就一两个,那就没这个必要
好几种设计模式都是相互矛盾的,要看适用的环境
刚开始学都是这样,生搬硬套反而适得其反
再好好看看书,设计模式不是那么好领悟的

问题七:用 工厂模式开发有什么好处,在什么情况下用工厂模式开发 工厂生产产品,工厂模式实例化对象,当你需要实例化一个对象,并且有不止一个选择(所有供选择的类都实现了同一个接口)的时候针对这一情况写一个通用的方法(方法返回类型是那个共用的接口),这就是工厂模式了。

问题八:实际开发中哪些场景需要用到工厂模式 一般的MVC框架中,都有一个基本的DB数据库基本操作类
我叫它DB class,有一个baseModel class 去继承 db class
baseModel 是所有框架model的基类,需要继承baseModel
baseModel已经有db类的

增删查改的方法了,baseModel其实就是数据库工厂,不同的模型继承baseModel,就有操作不同数据表的对象实例了,这样就用一个基础的class
完成了实例化各个不同数据表的对象,就好像是工厂一样,传不同的表名字就返回给你不同的对象。

问题九:为什么手机按开机键和音量键进入的是工厂模式 Recovery模式刷机方法:

步骤一、首先要确定手机是否刷入了Recovery ,如果没有的需要刷入Recovery才能进入Recovery进行刷机。
步骤二、然后在进入设置把USB调试关闭掉,把刷机包复制到SD卡里面。关闭了USB调试才能读取出来手机内存。
步骤三、然后在进入recovery模式,进入recovery模式的按键有的不一样。有的可以从电脑控制进入recovery模式,有的按着开机键+音量键就能进入recovery模式。进入recovery模式之后先清除所有的数据。
步骤四、然后在清除手机里面的缓存数据,这些操作上下就可以使用音量键调节。确定就是开机键。步骤五、然后在选择刷机包,一般是装在SD卡上面的。所以从SD卡上面选择刷机包。
步骤六、刷机包是ZIP文件,点击从SD卡上面选择ZIP文件。然后选择刷机包的文件点击确定即可。
按着电源键重新启动即可退出。

问题十:之前一直不明白工厂模式的好处是什么,就是为什么不用new,有人说假如有成百上千和地方都用的是new 工厂模式是多态的一个应用,new对象的时候都用父类引用,更改的时候就不用变


程序开发中的工厂模式是什么呢?

你好,很高兴能解答你的问题,工厂模式是程序中的一种常见的设计模式。首先工厂模式是软件开发中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式主要的意图是:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。案列1:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。 2、Hibernate 换数据库只需换方言和驱动就可以。优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。案例2:日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。 2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 3、设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。注意事项:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。1、开闭原则开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。希望能帮到你,谢谢!

知道什么是工厂模式么?

工厂模式与抽象工厂模式是应用得比较多的构造型模式,先简单的介绍一下这种构造模式的应用背景:
在开发一个类的过程中,我们一般都要为这个类开发相应的构造函数(不过大部分情况下,.NET开发环境会自动默认创建构造函数),这样,使用这个类的客户可以利用构造函数对这个类进行实例化.但是,有时候会出现这种情况:需要使用一个对象的客户并不知道(或者不应该知道)应该对几个类中的哪个类进行初始化.面对这个问题,我们可以利用工厂模式定义一个接口,客户可以使用这个接口创建一个对象.同时我们还可以控制对哪个类进行实例化,实例化过程使用了一个方法,这个方法需要利用外部因素来确定对哪个类进行实例化.有时候,这些外部因素就是一个庞大的研究主题,并且往往会涉及到多个类.为此,抽象工厂模式就应用于这种场合,其目的是为了提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类”,至少“无需指定它们具体的类”符合我们的要求。
  下面就Gof's Design Pattern Framework2.0中的一个UML class diagram及一个通俗易懂的例子来说明一下:

这个图比较形象直观,能很清楚的看出抽象工厂与工厂以及客户之间的关系.
  下面就举个例子来看看:
假如我的程序中有需要一系列的对象,比如bed,desk,chair…, 要想利用他们,我们就必须在程序中根据用户要求,然后一个个调用 new 操作符来生成他们,这样客户程序就要知道相应的类的信息,生成的代码显然不够灵活。再此它们显然是一类的,都是furniture,既然如此,我们只要一个生产家具的工厂就可以.我们可以在代码中不利用具体的类,而只是说明我们需要什么,然后就能够得到我们想要的对象.


上一篇:2012美国梦之队

下一篇:没有了