设计模式之简单工厂模式


**简单工厂模式**是软件设计模式中的一种基础模式,它属于创建型模式,主要用于简化对象的创建过程。在简单工厂模式中,一个专门的工厂类负责创建对象,客户端通过调用工厂类的方法来获取所需的对象,而无需关心具体的创建细节。 ### 1. 模式概念 简单工厂模式的核心思想是将对象的实例化过程封装在一个单独的工厂类中,这个类被称为“简单工厂”。当需要创建对象时,用户不再直接new实例,而是通过工厂类的静态方法来获取对象。这样做的好处是降低了代码的耦合度,使得系统更容易扩展和维护。 ### 2. 主要角色 - **产品接口(Product)**:定义了所有可能创建的对象的共同接口或抽象基类。 - **具体产品(Concrete Product)**:实现了产品接口的具体对象,是工厂方法实际创建的对象。 - **工厂类(Factory)**:包含了创建产品对象的逻辑,根据输入参数返回相应的产品实例。 ### 3. 工作流程 1. 客户端代码通过调用工厂类的静态方法,传入所需的类型参数。 2. 工厂类内部根据传入的类型判断,决定创建哪个具体产品的实例。 3. 工厂类返回创建好的对象给客户端使用。 ### 4. 优缺点 **优点**: - 提供了一个统一的接口,使得客户端可以独立于具体产品类进行编程。 - 隐藏了对象创建的复杂性,提高了代码的可读性和可维护性。 **缺点**: - 工厂类职责过重,如果添加新产品,需要修改工厂类的逻辑,违背了开闭原则。 - 对象的创建和对象的使用耦合度过高,不利于扩展。 ### 5. 示例 ```java // 产品接口 public interface Shape { void draw(); } // 具体产品 public class Rectangle implements Shape { @Override public void draw() { System.out.println("Drawing a rectangle."); } } public class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a circle."); } } // 工厂类 public class ShapeFactory { public static Shape getShape(String type) { if ("rectangle".equalsIgnoreCase(type)) { return new Rectangle(); } else if ("circle".equalsIgnoreCase(type)) { return new Circle(); } else { throw new IllegalArgumentException("Invalid shape type."); } } } // 客户端代码 public class Client { public static void main(String[] args) { Shape rectangle = ShapeFactory.getShape("rectangle"); rectangle.draw(); Shape circle = ShapeFactory.getShape("circle"); circle.draw(); } } ``` ### 6. 结合PPT学习 `01第一讲简单工厂模式.ppt`文件通常会包含深入的理论讲解、模式结构图、示例代码以及应用场景的分析,有助于初学者更好地理解简单工厂模式的工作原理和实践应用。 ### 7. 实际应用 简单工厂模式常用于框架和库中,如数据库连接的创建、GUI组件的生成等。在Java中,`java.sql.DriverManager.getConnection()`就是一个简单的工厂模式应用,它根据URL和驱动类名创建对应的Connection对象。 通过深入理解和实践简单工厂模式,开发者能够更好地组织代码,降低耦合,提高代码的可复用性和可维护性。














































- 1


- 粉丝: 31
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 金蝶财务软件课件.ppt
- 基于c#的库存管理系统的开发毕业(论文)设计.doc
- 对数正态分布下基于MLE的白光OLED寿命预测-机械设计制造及自动化专业毕业设计-毕业论文.doc
- java培训心得体会三篇.doc
- java修饰词的总结.doc
- 集思益答网络调查问卷.docx
- 《计算机网络基础》课件制作与设计.doc
- 2022年智慧大厦信息化建设方案-智慧楼宇智能化建设方案-IBMS建设方案.pptx
- 网络公司实习自我鉴定范文.doc
- 旅游网站方案设计书与实现大学本科方案设计书.doc
- 系统软件推广销售合作协议.docx
- 第三单元第一节科学合理使用网络教学设计川教版(2024)初中信息技术七年级上册.docx
- 应聘登记表excel模板.xls
- 基于jsp和sqlserver2008的物流信息网络系统.doc
- 学位论文-—基于安卓平台的手机计步器.doc
- 电子商务与特许经营的联合发展分析论文.doc


