一.  概念
  工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。(工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。)
  
二. 分类
工厂模式在《Java与模式》中分为三类:
1)简单工厂模式(Simple Factory):不利于产生系列产品;

2)工厂方法模式(Factory Method):又称为多形性工厂;

3)抽象工厂模式(Abstract Factory):又称为工具箱,易于产生系列产品,但不利于产生新的产品;

三. 举例
注:这里我只说明思路,具体的代码,更详细的原理请参考尚学堂马士兵老师的视频教学点击这里
(1).简单工厂
假设现在有Car,Train,Plane等这些类,相应的CarFactory,TrainFactory,PlaneFactory里面会有产生对应对象的方法,利用工厂来生产对象,这种就是简单工厂。
(2).抽象工厂
抽象工厂模式是在工厂模式的基础上增加的一层抽象概念。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。故我们也叫它“工厂的工厂”。
例如:现实生活中海尔公司会生产好多产品系列,一个系列可能会包括冰箱,洗衣机,电磁炉,另一个系列可能就会生产冰箱,吸尘器之类的。在总的工厂里面会有生产这一个系列,一个系列的工厂,在这每一个系列里面又会产生具体的对象。

浅谈Java工厂模式相关推荐

  1. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  2. 趣谈java工厂模式

    工厂模式是用工厂方法代替new操作的一种模式.在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象.工厂模式分为3种:简单工厂模式.工厂方法模式.抽象 ...

  3. java的byte php_java_浅谈java的byte数组的不同写法,(由于篇幅原因阐述的不够详 - phpStudy...

    浅谈java的byte数组的不同写法 (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"b ...

  4. 常在池边游,却不曾到池子里一探究竟?浅谈Java线程池

    浅谈Java线程池 线程池,简单来说,就是一个池子嘛,里面养着一群线程,ABCD........,然后你要用的时候,从里面拿一个去用,用完放回去. 一群人要用的时候,每个人都从池子里面拿一个线程,当池 ...

  5. 浅谈 Java VM 发展

    浅谈 Java VM 发展 Jim Huang <jimchyun @ ccns.ncku.edu.tw> <jserv @ kaffe.org> 略为整理笔者对 Java V ...

  6. 浅谈Java多线程机制

    浅谈Java多线程机制 (-----文中重点信息将用红色字体凸显-----) 一.话题导入 在开始简述Java多线程机制之前,我不得不吐槽一下我国糟糕的IT界技术分享氛围和不给力的互联网技术解答深度. ...

  7. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  8. java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...

    23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...

  9. 浅谈 Java Printing

    浅谈 Java  Printing 其实怎么说呢?在写这篇博文之前,我对java printing 可以说是一无所知的.以至于我在敲文字时, 基本上是看着api文档翻译过来的.这虽然看起来非常的吃力, ...

最新文章

  1. IE中页面不居中,火狐谷歌等正常
  2. SpringMVC学习10之AJAX初体验和了解
  3. 数据库记录的添加、修改、删除(DataAdapter、DataTable 、DataRow )
  4. C++ const详解
  5. 机器学习中非平衡数据处理
  6. 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
  7. 【剑指offer】面试题40:最小的k个数(java)
  8. 修而未复:说说WebLogic那修不完的Java反序列化漏洞
  9. 文本获取和搜索引擎中的反馈模型
  10. zmap扫描mysql_45分钟扫遍全网:最快的互联网扫描工具ZMap
  11. mysql key语句_mysql建表语句key的含义
  12. 【数学建模】第一讲-层次分析法
  13. autocad2014点击保存闪退_autocad2014启动闪退 AutoCAD启动时闪退怎么办
  14. python:利用opencv实现图片转视频,视频转图片
  15. h5php大转盘抽奖,微信公众号H5抽奖幸运大转盘,PHP带后端,微信抽奖大转盘源码可以独立使用...
  16. 一文告诉您游戏开发需要学什么
  17. 怎么用matlab画国旗,Matlab考试攻略_国旗题_1.如何用Matlab画法国国旗?
  18. VLAN vs. VXLAN:云时代下各施所长
  19. SQLServer中使用between查询日期
  20. pandas一列拆分成多行

热门文章

  1. Oauth2.0 github认证登录实现
  2. GitHub 登录失败
  3. C/C++: “error: stray ‘\357’ in program“问题及其解决方法
  4. 区块链架构--fabric基本介绍
  5. 智慧路灯地方标准:“江苏省城市照明智慧灯杆建设指南”发布实施
  6. 研究RPGMaker中地面纹理的拼接方式
  7. layui————一个页面展示两个页签
  8. Stable Diffusion使用入门教程
  9. Teamface可定制化的CRM管理软件,颠覆传统的管理软件
  10. 反射型XSS靶场练习