当前位置: 首页 > news >正文

Java设计模式---工厂方法(Factory Method)模式

说明

工厂方法(Factory Method)模式是一种工厂模式,也叫多态性工厂(Poloymorphic Factory)模式。

工厂方法模式涉及如下角色:

  • 抽象工厂角色:给出具体工厂角色必须实现的接口。
  • 具体工厂角色:实现抽象工厂的接口,了解创建具体产品的逻辑,创建具体的产品。
  • 抽象产品角色:给出具体产品的共同接口。可以使用标记接口(即接口是空的)。
  • 具体产品角色:实现抽象产品的接口。
  • 客户端角色:调用工厂角色创建具体的产品。

一般来说,工厂角色的层级和产品角色的层级是相对应的。先把产品角色的层级规划好,再规划工厂角色的层级。

示例

一个简单的示例

定义一个抽象产品,这是一个标记接口:

package com.thb;public interface Graphic {}

定义两个具体产品:

package com.thb;public class Circle implements Graphic {}
package com.thb;public class Rectangle implements Graphic {}

定义一个抽象工厂:

package com.thb;public interface Factory {Graphic create();
}

因为有两个具体产品,所以定义两个具体工厂:

package com.thb;public class CircleFactory implements Factory {@Overridepublic Graphic create() {		return new Circle();}}
package com.thb;public class RectangleFactory implements Factory {@Overridepublic Graphic create() {		return new Rectangle();}}

定义一个客户端,进行调用:

package com.thb;public class Client {private static Graphic circle;private static Graphic rectangle;private static Factory circleFactory;private static Factory rectangleFactory;public static void main(String[] args) {circleFactory = new CircleFactory();rectangleFactory = new RectangleFactory();circle = circleFactory.create();rectangle = rectangleFactory.create();}}
http://www.lryc.cn/news/113191.html

相关文章:

  • MySQL的关键指标及采集方法
  • 协程怎么解释?Python 中的协程如何实现?Celery 的协程并发引擎如何实现?
  • Linux:shell脚本:基础使用(2)
  • Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器
  • 合规管理,企业生存之本!这4大方法,助你规避风险
  • 码云 Gitee + Jenkins 配置教程
  • Java重启
  • ReactNative 学习笔记
  • 小研究 - MySQL 数据库下存储过程的综合运用研究
  • CentOS 7 构建 LVS-DR 群集 nginx负载均衡
  • ESP32学习笔记(52)————三轴加速度ADXL345使用(SPI方式)
  • Camunda 7.x 系列【4】 Camunda Modeler 功能介绍
  • 呼叫中心系统管理和优化的关键指标
  • UML箭头汇总
  • 【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析
  • 高效管理,PDM系统与BOM系统携手合作
  • Elasticsearch 使用scroll滚动技术实现大数据量搜索、深度分页问题 和 search
  • 了解Swarm 集群管理
  • 【Docker】Docker私有仓库的使用
  • 基于arcFace+faiss开发构建人脸识别系统
  • C#设计模式(15)命令模式(Command Pattern)
  • 快速排序和qsort函数详解详解qsort函数
  • 搭建 elasticsearch8.8.2 伪集群 windows
  • C++ 运算符重载为成员函数
  • 51单片机程序烧录教程
  • Linux C++ 链接数据库并对数据库进行一些简单的操作
  • Linux进程间通信--msgsnd函数的作用
  • P1629 邮递员送信(最短路)(内附封面)
  • 网络安全--原型链污染
  • Harbor企业镜像仓库部署