千家信息网

Java怎么实现工厂方法设计模式

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Java怎么实现工厂方法设计模式",在日常操作中,相信很多人在Java怎么实现工厂方法设计模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎
千家信息网最后更新 2026年10月31日Java怎么实现工厂方法设计模式

这篇文章主要介绍"Java怎么实现工厂方法设计模式",在日常操作中,相信很多人在Java怎么实现工厂方法设计模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java怎么实现工厂方法设计模式"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

工厂方法模式使我们能够在不将创建逻辑暴露给客户端的情况下创建对象,并使用通用接口引用新创建的对象。它是最广泛使用的创作模式之一。

此模式也称为 虚拟构造函数。

根据 Gamma等人的Design Patterns,这种模式的目的 是:

  • 定义用于创建对象的接口,但让子类决定实例化哪个类。Factory方法允许类将实例化延迟到子类。

Factory方法用于创建对象。超类指定所有标准和通用行为,然后将创建详细信息委托给客户端提供的子类。

Factory方法使设计更具可定制性,而且更复杂一些。其他设计模式需要新类,而Factory只需要新操作。

结构体

工厂方法模式的结构如下图所示:

图:工厂方法模式的结构

如今,static 类的 方法通常用作返回所需类类型的对象的工厂方法。与构造函数不同,它返回的实际对象可能是子类的实例,也可能重用现有对象,而不是创建新对象。

使用a factory 代替a的一个 优点 constructor 是 factory 方法可以具有不同的和更具描述性的名称。

例

让我们考虑一个根据客户需求绘制不同几何形状的应用程序。应用程序的类图如下所示:

图:工厂方法模式示例

所述 ShapeFactory 类具有静态方法getShape(),它返回 GeometricShape 字符串名称输入的基础上对象。

Java实现

我们已经介绍了上面讨论的应用程序的Java实现。

让我们首先为产品制作一个接口factory。

/ **
 *产品界面
 * /
公共 界面 GeometricShape {
    void  draw();
}

以下是上述接口的实现:

/ **
 *混凝土产品
 * /
public  class  Line  实现 GeometricShape {
    @覆盖
    public  void  draw(){
        系统。出。println("Line Drawn。");
    }
}
/ **
 *混凝土产品
 * /
public  class  Rectangle  实现 GeometricShape {
    @覆盖
    public  void  draw(){
        系统。出。println("绘制矩形。");
    }
}
/ **
 *混凝土产品
 * /
public  class  Circle  实现 GeometricShape {
    @覆盖
    public  void  draw(){
        系统。出。println("绘制圆圈"。);
    }
}

我添加了以下枚举来命名形状:

public  enum  ShapeType {
    LINE,
    CIRCLE,
    RECTANGLE,
    三角形
}

现在,让我们创建一个 factory 提供产品的产品(在本例中 GeometricShape):

/ **
 *混凝土产品
 * /
公共 抽象 类 ShapeFactory {
    public  static  GeometricShape  getShape(ShapeType  name){
        GeometricShape  shape  =  null ;
        开关(名字){
            案例 LINE:
                shape  =  new  Line();
                打破 ;
            案例 CIRCLE:
                shape  =  new  Circle();
                打破 ;
            案例 RECTANGLE:
                shape  =  new  Rectangle();
                打破 ;
        }
        回归 形状 ;
    }
}

应用程序的客户端提供所需形状的名称,如下所示。

/ **
 *客户
 * /
公共 类 申请 {
    public  static  void  main(String [] args){
        //请求圆形
        GeometricShape  circle  =  ShapeFactory。getShape(ShapeType。CIRCLE);
        if(circle  !=  null){
            圈子。draw();
        } else {
            系统。出。println("此形状无法绘制。");
        }
        //请求不存在的形状
        GeometricShape  triangle  =  ShapeFactory。getShape(ShapeType。三角);
        if(triangle  !=  null){
            三角形。draw();
        } else {
            系统。出。println("此形状无法绘制");
        }
    }
}

该计划的输出是:

圈 被 绘制。
这个 形状 可以"吨绘制

由于存在圆形,Circle 因此返回有效 对象。但是,没有带三角形的类,因此无法绘制形状。

到此,关于"Java怎么实现工厂方法设计模式"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

方法 模式 对象 工厂 形状 产品 设计 设计模式 客户 系统 子类 应用程序 接口 混凝土 程序 三角 学习 应用 不同 三角形 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 上海挚品互联网科技有限公司 为想互联网科技 奇酷互联网络科技 安徽鑫晟辉互联网科技 赫美联合互联网科技 互联网科技视频素材 互联网 科技服务平台 互联网科技素材视频竖屏 深圳前海聚择互联网科技有限公司 昭通云南众福互联网科技有限公司 武汉健翔互联网络科技有限公司 互联网科技公司实习生 青岛科技大学互联网大赛研究生 速维有品互联网信息科技(苏州)有限公司 互联网科技研发水平 从那以后互联网科技有限公司 陕西云淼互联网科技公司 福建互联网展示科技馆设计 盐城市攀科互联网科技有限公司 关于新基建和互联网科技 为想互联网科技 万达互联网科技 左右互联网络科技 剑昆互联网络科技有限公司临桂 互联网软件和科技 和信科技工业互联网 互联网领先科技宣传片 互联网安防科技感 上海万顺科技互联网有限公司招聘
0