设计模式--简单(抽象)工厂模式
创始人
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();     } } 
总结

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

相关内容

热门资讯

揭秘一下!晋中胡乐辅助工具,w... 揭秘一下!晋中胡乐辅助工具,wpk俱乐部怎么作必弊,要领教程(有挂秘笈)-哔哩哔哩1、晋中胡乐辅助工...
揭露透视!wepoker免费透... 揭露透视!wepoker免费透视,微信卡五星小程序辅助,方式教程(果真有挂)-哔哩哔哩1、金币登录送...
透视软件!菠萝德州透视脚本,心... 透视软件!菠萝德州透视脚本,心悦填大坑辅助器免费下载,窍门教程(了解有挂)-哔哩哔哩1、进入游戏-大...
据通报!泸州大二实战技巧,约局... 据通报!泸州大二实战技巧,约局吧黑科技辅助器,攻略教程(有挂实锤)-哔哩哔哩1、该软件可以轻松地帮助...
六分钟了解!旺旺福建有挂吗,w... 六分钟了解!旺旺福建有挂吗,wepoker透视脚本免费app,操作教程(有挂猫腻)-哔哩哔哩1、很好...
揭幕透视!佛手在线大菠萝智能辅... 揭幕透视!佛手在线大菠萝智能辅助器,微信小程序辅助多少钱,法子教程(有挂方法)-哔哩哔哩1、佛手在线...
透视私人局!佛手在线大菠萝技巧... 透视私人局!佛手在线大菠萝技巧,如何设置财神十三章的辅助功能,绝活儿教程(有挂细节)-哔哩哔哩1、许...
一直以来!蜂娱辅助,破解大菠萝... 一直以来!蜂娱辅助,破解大菠萝的辅助器,讲义教程(果真有挂)-哔哩哔哩在进入破解大菠萝的辅助器软件靠...
科普常识!江湖悠悠修改器,we... 科普常识!江湖悠悠修改器,wepoker辅助器官方,模板教程(有挂解惑)-哔哩哔哩1、操作简单,无需...
推荐透视!智星菠萝辅助,微乐家... 推荐透视!智星菠萝辅助,微乐家乡官方免费下载安装,手段教程(有挂分析)-哔哩哔哩智星菠萝辅助是不是有...