Gof设计模式之工厂模式(四)

定义

工厂模式是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。

分类

简单工厂模式

工厂方法模式

抽象工厂模式(明天再单独讲)

简单工厂模式

实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

工厂方法模式

工厂方法是粒度很小的设计模式,因为模式的表现只是一个抽象的方法。 提前定义用于创建对象的接口,让子类决定实例化具体的某一个类,即在工厂和产品中间增加接口,工厂不再负责产品的创建,由接口针对不同条件返回具体的类实例,由具体类实例去实现。

模式实现:

整体结构

产品接口

第一款产品具体类

第二款具体产品

抽象工厂

具体实现工厂

启动测试

结果

总结(优缺点)

优点:

1, 一个对象拥有很多子类。

2, 创建某个对象时需要进行许多额外的操作。

3, 系统后期需要经常扩展,它把对象实例化的任务交由实现类完成,扩展性好。

缺点:

每次增加一个产品时,都需要增加一个具体类和对象实现工厂使得系统中类的个数成倍增加,所以对于简单对象来说,使用工厂模式反而增加了复杂度

结语

简单的设计模式讲解已经接近尾声,希望大家可以多回头看看历史文章,温故而知新。

原文发布于微信公众号 - 精讲JAVA(toooooooozi)

原文发表时间:2017-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

C++ 智能指针详解

http://blog.csdn.net/xt_xiaotian/article/details/5714477

83710
来自专栏计算机视觉与深度学习基础

Leetcode 211 Add and Search Word - Data structure design

Design a data structure that supports the following two operations: void addWor...

20550
来自专栏皮皮之路

【JDK1.8】Java 8源码阅读汇总

40670
来自专栏AI科技大本营的专栏

送书 | Python编程:从入门到实践

本文摘自《Python编程:从入门到实践》一书,本书是Amazon编程入门类榜首图书,是一本全面的Python编程从入门到实践教程,带领读者快速掌握编程基础知识...

666100
来自专栏老马说编程

计算机程序的思维逻辑 (1)

程序大概是怎么回事 计算机就是个机器,这个机器主要由CPU、内存、硬盘和输入输出设备组成。计算机上跑着操作系统,如Windows或Linux,操作系统上运行着各...

213100
来自专栏应用案例

不到40行代码构建正则表达式引擎

原文:Build a Regex Engine in Less than 40 Lines of Code (作者:Nick Drane ,翻译:Diwei) ...

22070
来自专栏北京马哥教育

Python 的正则表达式彩蛋

虽然我觉得在 Python 的标准库里的确有不少很恶心的库,但是 re 库肯定不属于这种。尽管它真的有年头没有更新了,但是在我看来,仍不失为动态语言中最好的库...

30270
来自专栏算法channel

其他|c++几个容易混淆的点

希望时间的流逝不仅仅丰富我们的阅历,更重要的是通过提炼让我们得以升华,走向卓越。 1编译出错 一段时间没写c/c++的程序了,最近公司一个项目底层的核心算法是...

35350
来自专栏老九学堂

1分钟彻底理解C语言指针的概念

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节...

53580
来自专栏阁主的小跟班的专栏

C++11新特性使用总结

最近开始使用C++11编码,编码效率和代码质量提升不少,把目前我遇到的提升效率和代码质量的新特性都总结一下。

53500

扫码关注云+社区

领取腾讯云代金券