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

基本概念

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

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

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

适用的场景

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

egg

JS 复制代码
// 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);
相关推荐
UXbot1 小时前
AI网页开发工具能替代工具吗?5大平台对比
前端·人工智能·低代码·ui·原型模式·web app
星心源七境2 小时前
七境体系全解析:从六韬兵法到AI锁颜,一套贯穿古典智慧与现代应用的成长操作系统
人工智能·设计模式·设计
qq_297574673 小时前
设计模式系列文章(基础篇第21篇):迭代器模式——遍历聚合解耦,实现统一迭代访问
设计模式·迭代器模式
禅思院5 小时前
前端请求取消与调度完全指南:从 AbortController 到企业级优先级架构
前端·设计模式·前端框架
小bo波5 小时前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
写代码的小阿帆6 小时前
行为型设计模式之观察者(发布-订阅)模式
设计模式
王_teacher7 小时前
23种设计模式全解析(GoF 设计模式)
设计模式·软考·软件设计师·软考中级
weixin_307779137 小时前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
阿坤带你走近大数据8 小时前
分别介绍下java主流的开发框架、设计模式与对应编程语言的高级特性
java·开发语言·设计模式
geovindu8 小时前
go: Coroutines Pattern
开发语言·后端·设计模式·golang·协程模式