设计模式-简单工厂模式
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。在这个模式中,有一个名为“工厂”的类,负责创建对象,客户端通过调用工厂的方法来获取所需的对象,而无需关心对象的具体创建过程。 在简单工厂模式中,通常包含以下几个角色: 1. **产品接口/抽象类**:定义了公共的接口或基类,所有的具体产品都继承自这个接口或基类。 2. **具体产品类**:实现了产品接口或继承自产品基类,提供了具体的业务功能。 3. **工厂类**:负责创建产品对象,根据传入的参数或者条件决定创建哪种具体的产品对象。工厂类通常包含一个创建产品的静态方法。 在实际应用中,例如,我们可以创建一个`形状工厂`,它能生产`圆形`、`正方形`等不同类型的形状。客户端只需要向工厂请求形状,而无需知道形状是如何被创建的。 ```java // 产品接口/抽象类 public interface Shape { void draw(); } // 具体产品类 public class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a circle."); } } public class Square implements Shape { @Override public void draw() { System.out.println("Drawing a square."); } } // 工厂类 public class ShapeFactory { public static Shape createShape(String type) { if ("circle".equalsIgnoreCase(type)) { return new Circle(); } else if ("square".equalsIgnoreCase(type)) { return new Square(); } else { throw new IllegalArgumentException("Invalid shape type."); } } } ``` 客户端使用工厂模式的代码如下: ```java public class Client { public static void main(String[] args) { Shape circle = ShapeFactory.createShape("circle"); circle.draw(); Shape square = ShapeFactory.createShape("square"); square.draw(); } } ``` 简单工厂模式的优点包括: - 客户端无需知道产品的确切类型,只需要知道产品所对应的标识即可。 - 有利于系统的扩展,如果需要添加新产品,只需在工厂类中增加新的创建逻辑即可。 然而,它也有一些缺点: - 工厂类集中了所有产品的创建逻辑,这可能导致工厂类变得庞大且难以维护。 - 如果产品类型过多,使用条件语句判断可能会导致代码复杂度过高。 - 简单工厂模式违背了开闭原则,即对扩展开放,对修改关闭。当添加新产品时,需要修改工厂类的源代码。 在实际开发中,如果产品种类不多,且不经常变化,可以考虑使用简单工厂模式。但如果产品类型繁多,或者需要根据复杂的条件创建对象,可能需要考虑使用更灵活的工厂方法模式或抽象工厂模式。
- 1
- 2
- 3
- 4
- 5
- 6
- 16
- 粉丝: 34
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 410.基于SpringBoot的高校科研信息管理系统(含报告).zip
- 附件1.植物健康状态的影响指标数据.xlsx
- Windows 10 1507-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- Image_1732500699692.png
- Windows 10 21h1-x86 .NET Framework 3.5(包括.NET 2.0和3.0)安装包
- VMware 是一款功能强大的虚拟化软件,它允许用户在一台物理计算机上同时运行多个操作系统
- 31万条全国医药价格与采购数据.xlsx
- SQL注入详解,SQL 注入是一种常见的网络安全漏洞,攻击者通过在输入数据中插入恶意的 SQL 语句,欺骗应用程序执行这些恶意语句,从而获取、修改或删除数据库中的数据,甚至控制数据库服务器
- 用C语言实现哈夫曼编码:从原理到实现的详细解析
- py爱心代码高级粒子!!