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

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

基本概念

原型模式(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.kler.cn/news/162173.html

相关文章:

  • [MySQL] MySQL复合查询(多表查询、子查询)
  • Linux学习教程(第十四章 Linux系统服务管理)一
  • Docker构建自定义镜像
  • Determining Which Version of GDS is Installed
  • 银河麒麟安装lnmp,安装chrome。
  • [FPGA 学习记录] 快速开发的法宝——IP核
  • 【异常】SpringBoot3.2.0 Description: Failed to configure a DataSource: ‘url‘ att
  • 商品详情页评论和评论列表评论的排序html代码
  • Python---面向对象其他特性
  • 前端小技巧: 写一个异步程序示例, 使用任务队列替代promise和async/await等语法糖
  • Node CLI 之 Commander.js (1)
  • 性能测试工具:Jmeter介绍
  • 什么是网站?
  • Zabbix自定义飞书webhook告警媒介1
  • 设计模式基础——工厂模式剖析(2/2)
  • 使用 python ffmpeg 批量检查 音频文件 是否损坏或不完整
  • 备忘录模式 rust和java的实现
  • 机器学习实战:预测波士顿房价
  • Linus:我休假的时候也会带着电脑,否则会感觉很无聊
  • [论文阅读]Sparse Fuse Dense
  • 快速排序的新用法
  • CleanMyMac软件2024最新Mac系统清理工具实用性测评
  • FFmpeg数据结构AVFrame
  • SpringBoot项目访问resources下的静态资源
  • 企业计算机服务器中了360勒索病毒如何解密,勒索病毒解密数据恢复
  • 十五届蓝桥杯分享会(一)
  • React中每次渲染都会传入一个新的props.children到子组件?
  • Sentinel基础知识
  • WT588F02B单片机语音芯片在磁疗仪中的应用介绍
  • 【算法每日一练]-结构优化(保姆级教程 篇6 分块,倍增)#HDU4417超级马里奥 #poj2019玉米田 #POJ3368频繁值