设计模式-简单工厂模式
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。在这个模式中,有一个名为“工厂”的类,负责创建对象,客户端通过调用工厂的方法来获取所需的对象,而无需关心对象的具体创建过程。 在简单工厂模式中,通常包含以下几个角色: 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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 05-培训总结表.xlsx
- 培训评估调查问卷.xlsx
- 培训实践效果反馈与评估表(行动学习反馈).xlsx
- 培训评估反馈表.docx
- 培训评估管理办法(修改).docx
- 柯氏四级培训评估体系.doc.docx
- 基于java的旅游管理系统设计与实现
- 【年度培训】培训效果评估办法行政人事CLUB.docx
- 【年度培训】年度培训计划方案行政人事CLUB.docx
- 【年度培训】年度培训计划 (1)行政人事CLUB.docx
- 【年度培训】集团年度培训计划与方案汇编行政人事CLUB.docx
- 【年度培训】行政办公系统培训资料行政人事CLUB.docx
- 【年度培训】企业培训效果评估表行政人事CLUB.doc
- 【年度培训】培训效果评估报告分析行政人事CLUB.doc
- 打印機設定:M337x-387x-407x-Series-WIN-SPL-PCL-V3.13.13.00.01-CDV1.38
- 【年度培训】培训需求分析行政人事CLUB.doc