趣谈java工厂模式
工厂模式是用工厂方法代替new操作的一种模式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式分为3种:简单工厂模式、工厂方法模式、抽象工厂模式。
就像大白兔工厂是生成大白兔奶糖的,java工厂生产的是对象。
适用场景和优缺点 |
适用场景
(1)在编码时不能预见需要创建哪种类的实例。
(2)系统不应依赖于产品类实例如何被创建、组合和表达的细节
(3)Spring框架的IOC就是使用的工厂模式
优点
(1)一个调用者想创建一个对象,只要知道其名称就可以了
(2)扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
(3)屏蔽产品的具体实现,调用者只关心产品的接口。
缺点
每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
实现 |
类图
实现
请移步此篇博客:
【设计模式】工厂三姐妹
趣谈java工厂模式相关推荐
- 浅谈Java工厂模式
一. 概念 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的.(工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,虽然这样做 ...
- 趣谈设计模式 | 工厂模式(Factory):利用工厂来创建对象
文章目录 案例:外设店铺 简单工厂 工厂方法 抽象工厂 总结 要点 三类工厂模式的特点 三种工厂模式的适用场景 完整代码与文档 工厂模式模式是创建型模式中较为常用的一个,它并不是一个模式,而是三种功能 ...
- 趣谈设计模式 | 策略模式(Strategy):你还在使用冗长的if-else吗?
文章目录 案例:指挥官AI 策略模式 配合工厂模式 总结 完整代码与文档 案例:指挥官AI 案例可能不符合实际逻辑,仅用于表述设计模式的思想,勿介意 假设我们开发了一款类似全面战争的即时战略游戏,为了 ...
- java设计模式中不属于创建型模式_23种设计模式第二篇:java工厂模式定义:工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式...
23种设计模式第二篇:java工厂模式 定义: 工厂模式是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 工厂模式主要是为创建对象提供过渡接口, ...
- 3种Java工厂模式深入理解分析
Java工厂模式的概念 工厂模式适用于创建新对象最简单的办法是使用new关键字和具体类.工厂模式主要是为创建对象提供了接口.一般当在编码时不能预见需要创建哪种类的实例或者系统不应依赖于产品类实例如何被 ...
- 趣谈设计模式 | 模板方法模式(Template Method):封装不变部分,扩展可变部分
文章目录 案例:房屋建造 模板方法模式 模板方法模式与策略模式 总结 完整代码与文档 这个设计模式过于简单,所以不是很好举例- 案例:房屋建造 假设我们是建筑公司中的规划者,负责设定建筑方案,在初期我 ...
- java 工厂模式详解_java 工厂模式的实例详解
java 工厂模式的实例详解 工厂方法中的"工厂"和我们平常理解的一样:用于生产产品. 而客户是要和产品打交道,所以工厂方法模式的意义在于把客户和产品分开,达到解耦和更灵活的目的. ...
- java工厂模式和抽象工厂_Java中的抽象工厂设计模式
java工厂模式和抽象工厂 Welcome to Abstract Factory Design Pattern in java example. Abstract Factory design pa ...
- java工厂模式实例(设计模式)
目录 java工厂模式 工厂模式其实又分为三种 1.简单工厂模式: 简单工厂模式(非静态) 简单工厂模式(静态): 2.工厂方法模式: 3.抽象工厂模式: java工厂模式 开篇声明,此理解为作者自身 ...
最新文章
- 解读:数据科学、机器学习和AI的区别
- 不需要SAP请求号修改程序的方法
- BZOJ 4066: 简单题
- 点读笔客户端_新手妈妈如何选购点读笔
- 软件性能测试——瓶颈分析方法,性能测试——瓶颈分析方法
- 月薪5000和年薪百万的差距在哪里?
- c语言入门自学mobi,算法精解:C语言描述[AZW3][EPUB][MOBI][23.00MB]
- 百度地图使用,以及一些api
- 敏之澳分享拼多多的宝贝标题要怎么写?
- 技术总监/技术leader职责与工作记录第一天
- Ubuntu16.04设置root密码
- tensorflow1.0 windows下安装
- Fabric架构原理总结
- (数据分析)Python-matpoltlib库-绘制条形图
- MediaStore.Images.Media.insertImage保存图片
- 4K Video Downloader (4K超高清视频下载器)V6.1.46版本发布
- c语言选择冒泡排序,c语言选择冒泡排序讲解(附代码)
- java实现pdf转图片pdf
- 数据流挖掘_Flajolet-Martin算法
- x86架构linux内核引导过程分析,Linux内核x86架构引导协议7(翻译)