java与模式之简单工厂模式
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题。在Java编程中,简单工厂模式通过一个公共的工厂类来创建对象,避免了客户端代码直接new对象,增强了代码的可维护性和扩展性。 在Java与模式之简单工厂模式中,我们首先理解其基本概念。简单工厂模式包含三个主要角色: 1. **产品接口(Product)**:定义了产品的公共接口,所有具体产品类都需要实现这个接口。 2. **具体产品(Concrete Product)**:实现了产品接口的类,是工厂方法模式的具体结果。 3. **工厂类(Factory)**:根据输入的参数或者条件,创建并返回具体产品实例。 在实际应用中,例如一个简单的例子是创建不同类型的图形对象,如矩形、圆形等。工厂类会根据用户的需求,动态地创建出相应的图形对象。工厂类通常包含一个静态方法,该方法负责判断输入参数并返回相应的产品实例。 下面是一个简单的Java实现示例: ```java // 产品接口 public interface Shape { void draw(); } // 具体产品1 - 矩形 public class Rectangle implements Shape { @Override public void draw() { System.out.println("Drawing a Rectangle"); } } // 具体产品2 - 圆形 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(); } return null; // 返回null表示无法创建指定类型的形状 } } ``` 在这个例子中,`ShapeFactory.getShape()`方法根据传入的字符串参数(如"Rectangle"或"Circle"),返回对应的形状对象。这样,客户端代码只需调用工厂方法,而无需关心具体对象的创建过程。 然而,简单工厂模式有一些局限性: 1. 如果产品类型增加,需要修改工厂类的代码,违反了开闭原则。 2. 工厂类职责单一,但包含了大量的if-else语句,可能影响代码的可读性和可维护性。 为了克服这些问题,可以考虑使用更高级的工厂模式,如抽象工厂模式、工厂方法模式或者依赖注入框架,以提高代码的灵活性和可扩展性。 简单工厂模式是一种实用的设计模式,尤其在对象创建相对固定且易于管理的情况下。但随着系统复杂性的增加,应考虑使用更复杂的创建型模式。在学习和应用模式时,理解其优缺点以及适用场景至关重要。
- 1
- 粉丝: 387
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助