Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >设计模式之简单工厂模式 (一)

设计模式之简单工厂模式 (一)

作者头像
Java架构
发布于 2020-04-24 02:37:04
发布于 2020-04-24 02:37:04
1990
举报
文章被收录于专栏:Java架构师学习Java架构师学习

简单工厂模式

基本定义:

简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。

模式结构:

1. Factory:工厂角色。专门用于创建实例类的工厂,提供一个方法,该方法根据传递的参数不同返回不同类的具体实例。

2. Product:抽象产品角色。为所有产品的父类。

3. ConcreteProduct:具体的产品角色。

代码实现:

1、Product 抽象产品类

···

/*** @Description Product 抽象产品类

* @Author yanyuan

* @Date 18:27 2020/4/14

* @Version 1.0

**/publicinterface Phone {void make();void call();

}

···

2、Concrete Product 具体产品类

···

import lombok.extern.slf4j.Slf4j;/*** @Description 华为手机

* @Author yanyuan

* @Date 18:30 2020/4/14

* @Version 1.0

**/@Slf4jpublicclassHuaweiPhoneimplements Phone {

@Overridepublicvoid make() {

log.info("华为手机制作完成");

}

@Overridepublicvoid call() {

log.info("华为手机拨打电话");

}

}

···

···

/*** @Description Concrete Product 具体产品类

* @Author yanyuan

* @Date 18:28 2020/4/14

* @Version 1.0

**/@Slf4jpublicclassIPhoneimplements Phone{

@Overridepublicvoid make() {

log.info("制作iPhone手机");

}

@Overridepublicvoid call() {

log.info("iPhone手机拨打电话");

}

}

···

3、Factory 工厂角色类

···

import lombok.extern.slf4j.Slf4j;/*** @Description Factory 工厂角色类

* @Author yanyuan

* @Date 22:06 2020/4/14

* @Version 1.0

**/@Slf4jpublicclass SimpleFactory {public Phone createPhone(String brand){

Phone phone =null;switch (brand){case"HUAWEI":

phone =new HuaweiPhone();break;case"IPHONE":

phone =new IPhone();break;default:

log.error("暂不支持该品牌手机");break;

}return phone;

}

}

···

4、测试类

···

/*** @Description 简单工厂模式测试类

* @Author yanyuan

* @Date 22:10 2020/4/14

* @Version 1.0

**/publicclass Test {publicstaticvoid main(String[] args) {

SimpleFactory factory =new SimpleFactory();

Phone huaweiPhone = factory.createPhone("HUAWEI");

huaweiPhone.make();

huaweiPhone.call();

Phone iPhone = factory.createPhone("IPHONE");

iPhone.make();

iPhone.call();

}

}

···

输出结果

22:16:19.325 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.HuaweiPhone - 华为手机制作完成

22:16:19.343 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.HuaweiPhone - 华为手机拨打电话

22:16:19.344 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.IPhone - 制作iPhone手机

22:16:19.344 [main] INFO com.yanyuan.gof.build.simpleFactory.v2.IPhone - iPhone手机拨打电话

优缺点

优点

实现了对责任的分隔,提供了专门工厂类创建对象。

用户无需知道具体产品名。

通过配置文件方式,可以在不修改客户端(消费端)代码情况下变更/增加新产品,在一定程序上提高了系统的灵活性。

缺点

由于工厂类集中了所以产品创建逻辑,一旦不能正常工作,整个系统受影响。

使用简单工厂模式将增加系统类的个数,在一定程度上增加了系统的复杂度和理解。

系统扩展困难,一旦添加了新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

总结

简单工厂模式的要点就在于当你需要什么,只需要知道正确参数,就可以获取你所需要的对象,无需知道其创建细节。

简单工厂模式最大的优点在于实现对象的创建和对象的分离,但是如果产品过多时,会导致工厂代码复杂。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通俗理解设计模式之工厂模式(一)
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
程序视点
2023/05/11
2950
通俗理解设计模式之工厂模式(一)
Java设计模式——工厂模式讲解以及在JDK中源码分析
小熊学Java个人网站:https://javaxiaobear.gitee.io/
小熊学Java
2023/07/16
2920
Java设计模式——工厂模式讲解以及在JDK中源码分析
设计模式学习笔记之工厂模式
这是一篇学习笔记,内容很多是来源于网上的资料,然后按照自己学习情况进行的总结,有些是自身的感受,有些是网上比较好的资料的引用。 我的个人博客:海加尔金鹰
海加尔金鹰
2020/06/09
3940
工厂模式
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
海向
2019/12/20
3150
用案例实战来给你讲解,设计模式中的工厂模式
但是,当项目后期需要二次开发时,代码的维护和修改的复杂度,绝对能让你恨不得把自己头发都薅秃
Java_老男孩
2021/07/16
3670
用案例实战来给你讲解,设计模式中的工厂模式
面向对象设计的设计模式(一):简单工厂模式
继上一篇的面向对象设计的设计原则,本篇是面向对象设计系列的第二个部分:面向对象设计的设计模式。
用户2932962
2019/01/07
1.1K0
简单工厂模式
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式。设计模式分为创建型模式、结构型模式、行为型模式,简单工厂模式属于创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
mingmingcome
2021/11/29
2980
简单工厂模式
大牧絮叨设计模式:简单工厂模式
简单工厂模式是一种创建模式,又称为静态工厂方法模式,但是需要注意的是它不属于GOF23种设计模式之一。
大牧莫邪
2019/07/15
4360
大牧絮叨设计模式:简单工厂模式
PHP 常见设计模式——工厂模式
最近参加了几次面试,对于应用常见的几种设计模式问题,深有感触。为加强自身理解,同时也希望能给一些初级开发者一定的参考学习,决定开始就PHP常见的设计模式写下几篇博文,工作原因,会不定期更新,感谢您的耐心阅读!
全栈程序员站长
2022/09/17
3280
Objective-C 工厂模式(上) -- 简单工厂模式
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
周希
2019/10/15
1K0
简单工厂模式
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于创建对象的实例。通过一个工厂类来决定实例化哪一个具体类,降低客户端与具体类之间的耦合。
码事漫谈
2024/12/20
1180
简单工厂模式
解决简单工厂问题:设计模式之工厂方法模式
在上一节的简单工厂模式中,我们知道简单工厂所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
程序视点
2023/05/24
2750
解决简单工厂问题:设计模式之工厂方法模式
java设计模式-工厂模式
简单工厂模式又称为静态工厂方法模式,为何称为静态工厂方法模式呢?是因为该模式主要由一个工厂类的静态方法来提供各种产品。
会说话的丶猫
2020/08/06
6120
java设计模式-工厂模式
设计模式:简单工厂模式
简单工厂模式又称静态工厂方法(Static Factory Method)模式,它不是Gof 所讲的23种设计模式之一,但是它却是我们在编码过程中经常使用的方法之一。
王强
2018/08/09
4600
设计模式:简单工厂模式
「聊设计模式」之简单工厂模式(Simple Factory)
🏆本文收录于 《聊设计模式》 专栏,专门攻坚指数级提升,助你一臂之力,早日登顶🚀,欢迎持续关注&&收藏&&订阅!
bug菌
2023/10/30
7302
「聊设计模式」之简单工厂模式(Simple Factory)
小谈设计模式(2)—简单工厂模式
主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。
学编程的小程
2023/10/11
2310
小谈设计模式(2)—简单工厂模式
设计模式(一):简单工厂模式
设计模式(一):简单工厂模式
Java架构师必看
2021/05/14
2830
设计模式之简单工厂模式
简单工厂模式,需要说明的是,它并不属于GOF 23种设计模式中的一种。但它却丰富了工厂模式家族,因为其简单的思想和使用方式,也有很广泛的使用
AI.NET 极客圈
2019/07/19
2950
设计模式之简单工厂模式
设计模式——工厂模式详解(代码演示)
在简单工厂模式中创建实例的方法通常为静态(static)方法,因此简单工厂模式(Simple Factory Pattern)又叫作静态工厂方法模式(Static Factory Method Pattern)。
小尘要自信
2023/10/10
3170
工厂模式的三种实现,就这么简单!
工厂模式是开发中常用的一种设计模式,每一种设计模式都会极大的解决程序设计方面的问题,工厂模式也是一样,本文将会用通俗的语言来解释什么是工厂模式?工厂模式的种类、代码示例、每种工厂模式的优缺点和工厂模式适用的场景。
java之旅
2020/03/24
1K0
相关推荐
通俗理解设计模式之工厂模式(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档