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

一天一个设计模式---原型模式

基本概念

原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是通过实例化类。原型模式允许在运行时动态创建对象,同时避免了耦合与子类化。
在这里插入图片描述

在原型模式中,有一个原型对象,它是被复制的对象。新对象通过复制原型对象的属性和状态而创建,从而避免了直接使用构造函数或实例化类的方式创建新对象。原型模式通常涉及以下几个角色:

  • 抽象原型类(Prototype): 定义了克隆方法的接口,可以是抽象类或接口。这个接口可以包含一个克隆方法,用于复制对象。
  • 具体原型类(ConcretePrototype): 实现了抽象原型类的接口,实现了克隆方法。具体原型类是被复制的对象。
  • 客户端(Client): 负责使用原型对象和克隆新对象的客户端。

适用的场景

  • 动态创建对象: 可以在运行时动态创建新对象,而无需事先知道对象的具体类。
  • 避免构造函数的复杂性: 不需要调用构造函数来创建新对象,因此避免了构造函数的复杂性。
  • 减少子类的数量: 可以通过克隆来创建新对象,而不是通过继承。这减少了子类的数量,同时提高了灵活性。

egg

// 1. 抽象原型类
class Prototype {constructor() {this.property = "Prototype Property";}clone() {// 创建新对象并复制属性const newObject = Object.create(this);return newObject;}
}// 2. 具体原型类
class ConcretePrototype extends Prototype {constructor() {super();this.additionalProperty = "Additional Property";}
}// 3. 客户端
const originalObject = new ConcretePrototype();
console.log("Original Object:", originalObject);const clonedObject = originalObject.clone();
console.log("Cloned Object:", clonedObject);
http://www.lryc.cn/news/255216.html

相关文章:

  • <习题集><LeetCode><链表><2/19/21/23/24>
  • C++实现DFS、BFS、Kruskal算法和Prim算法、拓扑排序、Dijkstra算法
  • Spring 依赖注入的三种方式优缺点
  • 代理模式介绍(静态代理、jdk动态代理、cglib代理)
  • 设计模式基础——工厂模式剖析(2/2)
  • spark3.x 读取hudi报错
  • 微信小程序中block和View组件的使用区别
  • 代码混淆技术探究与工具选择
  • selenium 解决 id定位、class定位中,属性值带空格的解决办法
  • gma 空间绘图实战(1):绘制多个子图,连接并展示局部放大区域
  • Unity中C#使用协程控制Shader材质变化
  • WordPress禁止显示指定类别的文章
  • C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释
  • C语言——指针(五)
  • 文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑气电联合需求响应的气电综合能源配网系统协调优化运行》
  • PostgreSQL 主键和唯一键的区别
  • 删除表格中的所有绘图
  • Linux卸载Nginx
  • Qt之QGraphicsView —— 笔记1:绘制简单图元(附完整源码)
  • SpringIoC原理
  • 如何对售后服务的全流程进行精细化的管理?
  • SAP UI5 walkthrough step2 Bootstrap
  • Gemini:定义下一代人工智能的里程碑
  • 一些系统日常运维命令和语句
  • 微信小程序uni.chooseImage()无效解决方案
  • Rust深入浅出:编程的深邃大海中的奇妙冒险
  • go-zero开发入门-API网关开发示例
  • TCP一对一通信
  • laravel DB::connection 报错 Database connection [{$name}] not configured
  • 快捷支付是什么?快捷支付好申请吗?