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

设计模式之原型模式

原型模式(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'}

相关文章:

  • 基于多模态脑电、音频与视觉信号的情感识别算法【Nature核心期刊,EAV:EEG-音频-视频数据集】
  • [Java恶补day10] 560. 和为K的子数组
  • 前端高频面试题1:HTML/CSS/浏览器/计算机网络
  • LangChain 和 LangChain-ChatChat 的区别
  • fingerprint2浏览器指纹使用记录
  • 38. 自动化测试异步开发之编写客户端异步webdriver接口类
  • AST抽象语法树:从编译原理到现代编程实践的全景解析
  • LVS + Keepalived高可用群集
  • Java互联网大厂面试:从Spring Boot到Kafka的技术深度探索
  • TDengine 运维——巡检工具(安装前检查)
  • 数据结构数组总结
  • 【Dify系列教程重置精品版】第十一章:Dify与slenium
  • 3d GIS数据来源与编辑工具
  • 3D拟合测量水杯半径
  • Vert.x学习笔记-什么是Handler
  • 海上石油钻井平台人员安全管控解决方案
  • 华为OD机试真题——战场索敌(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 【第4章 图像与视频】4.5 操作图像的像素
  • Spring框架学习day4--Spring集成Mybatis(IOC)
  • 《深入解析UART协议及其硬件实现》-- 第三篇:UART ASIC实现优化与低功耗设计
  • 网站建设的产品类型是什么/webview播放视频
  • 游戏代理公司/深圳专业seo外包
  • 优化seo网站/什么是网站推广策略
  • 推荐几个响应式网站做参考/外链工厂 外链
  • 3g网站开发/下店拓客团队
  • 广东品牌网站建设报价/58同城推广