首页 java算法 创建型-简单工厂 Factory Method

创建型-简单工厂 Factory Method

1、FACTORY 追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM…

1、FACTORY

追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。

麦当劳和肯德基就是生产鸡翅的Factory

工厂模式:客户类和工厂类分开。

消费者任何时候需要某种产品,只需向工厂请求即可。

.消费者无须修改就可以接纳新产品。

缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
QQ图片20170227215448

思想:Factory Method的主要思想是使一个类的实例化延迟到其子类。

场景:典 型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者实际实例化的对象(可能是需要对象的某个子类中的一 个)不确定,或者比较容易变化。此时,如果直接将实例化过程写在某个函数中,那么一般就是if-else或select-case代 码。如果,候选项的数目较少、类型基本确定,那么这样的if-else还是可以接受的,一旦情形变 得复杂、不确定性增加,更甚至包含这个构造过程的函数所在的类包含几个甚至更多类似的函数时,这样的if-else代 码就会变得比较不那么容易维护了。此时,应用本模式,可以将这种复杂情形隔离开,即将这类不确定的对象的实例化过程延迟到子类。

实现:该模式的典型实现方法就是将调用类定义为一个虚类,在调用类定义一个专门用于构造不确定的对象实例的虚函数,再将实际的对象实例化代码 留到调用类的子类来实现。如果,被构造的对象比较复杂的话,同时可以将这个对象定义为可以继承、甚至虚类,再在不同的调用类的子类中按需返回被构造类的子 类。

重构成本:低。该模式的重构成本实际上还与调用类自己的实例化方式相关。如果调用类是通过Factory方 式(此处“Factory方式”泛指对象的实例化通过Factory Method或Abstract Factory这样的相对独立出来的 方式构造)构造的,那么,重构成本相对就会更低。否则,重构时可能除了增加调用类的子类,还要将所有实例化调用类的地方,修改为以新增的子类代替。可能这 样的子类还不止一个,那就可以考虑迭代应用模式来改善调用类的实例化代码。

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

工作中java代码编写总结建议(持续更新)

工作中java代码编写总结建议(持续更新)

1.对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。 特别是帮助类的代码 2.每个名...
git简单学习(二)

git简单学习(二)

git 和svn有个区别就是暂存区 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区; 第二步是...
web缓存的了解

web缓存的了解

什么是Web缓存,为什么要使用它? Web缓存游走于服务器和客户端之间。这个服务器可能是源服务器(资源所驻留的服务器Ad...
小程序 wxss样式总结

小程序 wxss样式总结

display属性 none:此元素不会被显示 block:两个元素自动换行 inline:两个元素靠在一起 inher...
RedisDesktopManager 打开报0xc000007b程序错误

RedisDesktopManager 打开报0xc000007b程序错误

若发生这个问题,非常的简单,只要打开该软件的安装目录,双击运行下面的vcredist_x86.exe即可,这是由于在安装...
返回顶部