「设计模式详解」工厂模式:简单工厂模式原理、实现与优缺点分析 | 附Java代码示例
大家好,欢迎来到程序视点!我是你们的新朋友.安戈!
设计模式概述:创建型模式的基石
设计模式是软件开发中解决特定问题的经典方案模板,由四位软件工程师(GoF)在《设计模式:可复用面向对象软件的基础》中系统化提出。让我们先中其中的【创建型模式】开始。
【创建型模式】专注于对象创建机制,而工厂模式系列是其中最基础且实用的模式之一。
工厂模式的核心价值
工厂模式通过封装对象创建过程,提供以下优势:
降低代码耦合度
提高系统可扩展性
统一对象创建接口
简化复杂对象的创建过程
简单工厂模式深度解析
模式定义与角色划分
简单工厂模式(Simple Factory Pattern),又称静态工厂方法模式,包含三个核心组件:
工厂类(PhoneFactory):负责根据输入参数创建具体产品实例
产品抽象类/接口(Phone):定义所有产品的公共接口
具体产品类(HuaweiPhone/ApplePhone):实现抽象产品的具体功能
Java实现示例
// 产品接口
public interface Phone {
String getDescription();
}
// 具体产品实现
public class HuaweiPhone implements Phone {
@Override
public String getDescription() {
return "华为旗舰智能手机";
}
}
public class ApplePhone implements Phone {
@Override
public String getDescription() {
return "iPhone系列智能手机";
}
}
// 工厂类
public class PhoneFactory {
public static Phone createPhone(String brand) {
switch(brand.toLowerCase()) {
case "huawei":
return new HuaweiPhone();
case "apple":
return new ApplePhone();
default:
throw new IllegalArgumentException("不支持的手机品牌");
}
}
}

客户端调用方式
public class Client {
public static void main(String[] args) {
Phone huawei = PhoneFactory.createPhone("huawei");
System.out.println(huawei.getDescription());
Phone iPhone = PhoneFactory.createPhone("apple");
System.out.println(iPhone.getDescription());
}
}

模式优缺点与适用场景分析
优势体现
封装创建逻辑:客户端无需了解对象创建细节
接口统一:所有产品通过统一接口访问
降低耦合:客户端与具体产品类解耦
显著缺陷
违反开闭原则:新增产品类型需修改工厂类源码
职责过重:工厂类集中了所有创建逻辑
扩展困难:产品类型增多会导致工厂类臃肿
典型应用场景
产品类型较少且不频繁变化
客户端不关心具体产品创建过程
需要统一管理对象创建逻辑
演进方向:工厂方法模式
简单工厂模式虽然简单实用,但其扩展性问题催生了更灵活的工厂方法模式(Factory Method Pattern)
我们下一篇文章继续为你分享~
最后
【程序视点】助力打工人减负,从来不是说说而已!
后续安戈会继续详细分享更多实用的工具和功能。欢迎关注【程序视点】,这样就不会错过之后的精彩内容啦!
你的 「点赞/收藏」,安戈都看得见哦~
「设计模式详解」工厂模式:简单工厂模式原理、实现与优缺点分析 | 附Java代码示例的更多相关文章
- 设计模式详解及PHP实现:代理模式
[目录] 代理模式(Proxy pattern) 代理模式是一种结构型模式,它可以为其他对象提供一种代理以控制对这个对象的访问. 主要角色 抽象主题角色(Subject):它的作用是统一接口.此角色定 ...
- JAVA设计模式详解(三)----------装饰者模式
今天LZ带给大家的是装饰者模式,提起这个设计模式,LZ心里一阵激动,这是LZ学习JAVA以来接触的第一个设计模式,也许也是各位接触的第一个设计模式.记得当初老师在讲IO的时候就提到过它:“是你还有你, ...
- javascript设计模式详解之命令模式
每种设计模式的出现都是为了弥补语言在某方面的不足,解决特定环境下的问题.思想是相通的.只不过不同的设计语言有其特定的实现.对javascript这种动态语言来说,弱类型的特性,与生俱来的多态性,导致某 ...
- javascript设计模式详解之策略模式
接上篇命令模式来继续看下js设计模式中另一种常用的模式,策略模式.策略模式也是js开发中常用的一种实例,不要被这么略显深邃的名字给迷惑了.接下来我们慢慢看一下. 一.基本概念与使用场景: 基本概念:定 ...
- Java设计模式之-----工厂模式(简单工厂,抽象工厂)
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- 设计模式在cocos2d-x中的使用--简单工厂模式(Simple Factory)
什么是简单工厂模式? 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式.通过专门定义一个类来负责创建其它类的实例,被创建的实例 ...
- Javascript设计模式详解
Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...
- 16个PHP设计模式详解
说明:该教程全部截选自实验楼教程[16个PHP设计模式详解]:主要介绍16个常用的设计模式的基础概念和技术要点,通过UML类图帮助理解设计模式中各个类之间的关联关系,针对每种设计模式都使用PHP完成了 ...
- [ 转载 ] Java开发中的23种设计模式详解(转)
Java开发中的23种设计模式详解(转) 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...
- Java温故而知新(5)设计模式详解(23种)
一.设计模式的理解 刚开始“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目 ...
随机推荐
- 5 easybr指纹浏览器内存修改教程
目的 navigator.deviceMemory可以暴露设备的物理内存和运行状态,被用于设备唯一性识别或判断设备等级. 通过伪造这类信息,可以增强防关联.防追踪能力. easybr指纹浏览器提供演示 ...
- QQ会员首页HTML+CSS
作为一个穷人,唯一一次逛这么久的会员首页还是因为要写最头大的web~苦涩 效果图 源码 <!DOCTYPE html> <html> <head> <meta ...
- geekai开源项目二次开发 AI大模型 AI 助手全套开源解决方案
geekai-django 基于极客学长大佬的开源项目geekai 二次开发而来. GeekAI 是基于 AI 大语言模型 API 实现的 AI 助手全套开源解决方案,自带运营管理后台,开箱即用. 介 ...
- python3里面实现将日志文件写入当前脚本运行的文本中
在 Python3 中,可以使用 logging 模块来实现将日志写入本地文本文件中.下面是一个简单的示例代码: import logging # 配置 logging 模块 logging.basi ...
- 简单介绍List和数组转List集合
目录 综述 如何创建List 六种数组转List的方法 for循环遍历 Arrays.asList() new ArrayList<>(Arrays.asList(array)) Coll ...
- list.stream笔记-过滤-去重-转map、List等
代码 import vo.PosDataDetailVo; import java.util.*; import java.util.stream.Collectors; public class A ...
- ubuntu18.04安装网易云音乐1.2.1提示“加载失败,网络错误,可以在设置中发送反馈”
https://music.163.com/#/download 这是网易云的官网,右上角有下载Linux的链接 听说会出现无法打开网易云的问题,请参考这篇https://blog.csdn.net/ ...
- 【ASP.NET Core】调用 Web API 备份数据库
老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前.啊,大海啊,全是水:时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目.也许是现在大环境真 ...
- idea里面怎么把自己项目添加maven
首先你要清楚什么是maven: maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件.Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具 ...
- Redhat 7中文显示及中文输入法设置
一.安装系统语言为中文(此步可以忽略) -1- 查看系统中文语言安装包 1 命令:yum list kde*chinese 结果:可用安装包 kde-l10n-Chinese.noarch Hint ...
