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

设计模式之原型模式

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式之一。

原型模式包含以下几个主要角色:

  • 原型接口(Prototype Interface):定义一个用于克隆自身的接口,通常包括一个 clone() 方法。

  • 具体原型类(Concrete Prototype):实现原型接口的具体类,负责实际的克隆操作。这个类需要实现 clone() 方法,通常使用浅拷贝或深拷贝来复制自身。

  • 客户端(Client):使用原型实例来创建新的对象。客户端调用原型对象的 clone() 方法来创建新的对象,而不是直接使用构造函数。

优点

  • 性能提高
  • 避免构造函数的约束

缺点

  • 配备克隆方法需要全面考虑类的功能,对已有类可能较难实现,特别是处理不支持串行化的间接对象或含有循环结构的引用时。

代码案例

import java.util.UUID;  public interface Prototype {  Object  clone();  
}  /**  * 飞机类  */  
class Plane implements Prototype {  private Integer id;  private String type;  public Integer getId() {  return id;  }  public String getType() {  return type;  }  public Plane(){  id = (int) (Math.random() * 100 + 1);  type = UUID.randomUUID().toString();  }  public Plane(Plane plane){  this.id = plane.id;  this.type = plane.type;  }  @Override  public String toString() {  return "Plane{" +  "id=" + id +  ", type='" + type + '\'' +  '}';  }  @Override  public Object clone() {  return new Plane(this);  }  
}  class Test{  public static void main(String[] args) {  Plane plane = new Plane();  System.out.println(plane);  Plane clone = (Plane) plane.clone();  System.out.println(clone);  }  
}

程序输出

Plane{id=71, type='cc4e73ae-85c4-4735-a74d-d7bae0642724'}
Plane{id=71, type='cc4e73ae-85c4-4735-a74d-d7bae0642724'}
http://www.xdnf.cn/news/9673.html

相关文章:

  • [9-1] USART串口协议 江协科技学习笔记(13个知识点)
  • pycharm debug的时候无法debug到指定的位置就停住不动了
  • Spring Boot 3.0与Java 17:企业级应用开发的新范式
  • github.com/lib/pq 数据库链接完整示例方式
  • word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)
  • 【PhysUnits】15 完善的类型整数基本结构体(basic.rs)
  • AI自动化测试框架browser use 项目测试总结
  • 2025.5.28学习日记 linux三剑客 awk
  • 阿达三国志战棋天下攻略详解最新
  • 从时间到宇宙:探索时间同步的底层奥秘与工程实践
  • AI的“空间盲症“
  • 幸运之轮系统测试报告
  • 影刀RPA-操作网站基础信息
  • java精简复习
  • 153. 寻找旋转排序数组中的最小值
  • BeeWorks:构建企业智能数字化协作中枢,实现办公与业务系统的无缝整合
  • ansible-playbook 剧本
  • Python编程7——面向对象编程2
  • 华为OD机试真题——模拟工作队列(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 智能体通信协议之A2A和ANP对比分析
  • 【测试报告】博客系统
  • 学习python day10
  • 5.2.2二叉树的存储结构
  • 电脑软件管家 免安装便携 四十多种功能系统优化”“磁盘清理”“隐私保护
  • Windows中“无法成功完成操作,因为文件包含病毒或潜在的垃圾软件
  • 辛格迪客户案例 | 合规升级之路:辛格迪助力倍特药业迈向卓越
  • 面对 UI 差异化的调试难题:本地多设备测试中的 WebDebugX 应用实录
  • 【蓝桥杯嵌入式】【复盘】第15届省赛真题
  • Python学习(3) ----- Python的函数定义及其使用
  • OpenLayers 加载网格信息