设计模式--简单(抽象)工厂模式
创始人
2025-01-11 16:05:28
0

简单工厂模式(Simple Factory Pattern)详解

在软件开发中,我们经常需要根据不同的需求创建不同的对象实例。为了让代码更加灵活和可维护,设计模式提供了多种创建对象的方式,其中简单工厂模式(Simple Factory Pattern)就是一种常见且实用的方式。

什么是简单工厂模式?

简单工厂模式是由一个工厂类根据传入的参数,决定创建哪一种产品类的实例。这种模式将实例化对象的逻辑集中到一个工厂类中,使得客户端代码从直接创建对象的过程中解耦出来,简化了对象创建的过程。

示例:创建不同类型的形状对象

为了更好地理解简单工厂模式,我们来看一个具体的示例:假设我们需要创建不同类型的形状对象,比如圆形(Circle)、矩形(Rectangle)和正方形(Square)。

第一步:定义形状接口

首先,我们定义一个形状接口(Shape),所有具体的形状类都实现这个接口。

public interface Shape {     void draw(); } 
第二步:创建具体的形状类

接下来,我们创建实现 Shape 接口的具体形状类,比如 CircleRectangleSquare

public class Circle implements Shape {     @Override     public void draw() {         System.out.println("Drawing a Circle");     } }  public class Rectangle implements Shape {     @Override     public void draw() {         System.out.println("Drawing a Rectangle");     } }  public class Square implements Shape {     @Override     public void draw() {         System.out.println("Drawing a Square");     } } 

 

第三步:创建工厂类

然后,我们创建一个工厂类(ShapeFactory),它包含一个静态方法,根据参数返回不同的形状对象。

public class ShapeFactory {     public static Shape createShape(String shapeType) {         if (shapeType == null) {             return null;         }         if (shapeType.equalsIgnoreCase("CIRCLE")) {             return new Circle();         } else if (shapeType.equalsIgnoreCase("RECTANGLE")) {             return new Rectangle();         } else if (shapeType.equalsIgnoreCase("SQUARE")) {             return new Square();         }         return null;     } } 
第四步:使用工厂类创建形状对象

最后,我们在客户端代码中使用工厂类来创建不同的形状对象,而不是直接实例化具体的形状类。

public class Client {     public static void main(String[] args) {         Shape shape1 = ShapeFactory.createShape("CIRCLE");         shape1.draw();          Shape shape2 = ShapeFactory.createShape("RECTANGLE");         shape2.draw();          Shape shape3 = ShapeFactory.createShape("SQUARE");         shape3.draw();     } } 
总结

简单工厂模式通过一个工厂类集中管理实例化对象的逻辑,使得客户端代码不需要直接与具体类打交道,只需要知道工厂类和接口/抽象类即可。这种模式的优点在于代码清晰、维护方便,但也有一些缺点,如工厂类可能会变得复杂,并且违反了开闭原则,因为每次添加新的具体类时都需要修改工厂类的代码。

相关内容

热门资讯

黑科技辅助挂!wpk有检测不出... 黑科技辅助挂!wpk有检测不出来的外挂,太坑了竟然有挂(详细透视ai智能辅助器)-哔哩哔哩;1、让任...
黑科技辅助!悟空黑桃a有挂,w... 黑科技辅助!悟空黑桃a有挂,wepoke辅助技巧,教你教程(有挂详情)-哔哩哔哩;致您一封信;亲爱悟...
黑科技辅助(fishpoker... 黑科技辅助(fishpoker软件)外挂透明挂辅助插件(透视)爆料教程(2025已更新)(哔哩哔哩)...
黑科技挂!wopoker辅助真... 《黑科技挂!wopoker辅助真的假的(透视)果然有挂(有挂方略)-哔哩哔哩》 wopoker辅助真...
黑科技辅助挂!wpk微扑克真的... 黑科技辅助挂!wpk微扑克真的有辅助,太坑了固有真的是有挂(详细透视ai智能辅助安装)-哔哩哔哩是一...
黑科技辅助!wepoke智能a... 黑科技辅助!wepoke智能ai辅助工具,wepoker真的有挂,必胜教程(有挂详细)-哔哩哔哩;亲...
黑科技辅助(WPK有ai)外挂... 黑科技辅助(WPK有ai)外挂透明挂辅助安装(透视)玩家教你(2024已更新)(哔哩哔哩)是一款可以...
黑科技挂!德州ai辅助工具购买... 黑科技挂!德州ai辅助工具购买(透视)确实存在有挂(今日头条)-哔哩哔哩;AI辅助机器人普及解说快速...
黑科技辅助挂!wpk线上实战,... 您好:wpk线上实战这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特...
黑科技辅助!wepoke透明挂... 黑科技辅助!wepoke透明挂可以识别,红龙扑克辅助器能用,曝光教程(有挂头条)-哔哩哔哩是一款可以...