TypeScript | 设计模式02 - 原型模式

简介: 原型模式用一个已经创建的实例为原型,通过复制该原型实例来创建一个和原型相同或类似的新对象。简单说,通过克隆对象来实现一个新的对象。

原型模式

用一个已经创建的实例为原型,通过复制该原型实例来创建一个和原型相同或类似的新对象。简单说,通过克隆对象来实现一个新的对象。

直接查看一下的demo:

interface CarProto {
  clone(): CarProto;
}
​
class Bus implements CarProto {
  public name: string;
  public from: string;
  public createYear: number;
​
  constructor() {
    this.name = "公交车1";
    this.from = "北京";
    this.createYear = 2001;
  }
​
  public toWhere(where: string) {
    return `${this.name} 从 ${this.from} 开往 ${where}`;
  }
  // 实现复制
  public clone(): CarProto {
    return Object.create(this);
  }
}
​
const bus1 = new Bus();
console.log(bus1.toWhere("天津"));
bus1.name = "公交车2";
const bus2 = Object.create(bus1);
console.log(bus2.toWhere("天津"));
console.log(bus1.toWhere("天津"));
​
// 输出结果
公交车1 从 北京 开往 天津
公交车2 从 北京 开往 天津
公交车2 从 北京 开往 天津

通过Object.create的方法创建新的对象,提高了效率,但是从结果输出来看,需要对已有的类进行修改,原始的对象也发生了变化,整个过程就违背了OCP(开闭原则)原则。

适用场景:

  1. 对象间相同或者相似,没有太大的差别,即仅部分属性不同
  2. 当创建的对象成本比较大,如初始化时间长,占用网络资源过大
  3. 当创建的对象需要比较多的前置条件
  4. 系统中大量使用该类对象,且都需要对该对象的属性重新赋值

javaScript的原型和原型链

再聊聊JavaScript的原型和原型链,因JavaScript是基于原型的面向对象编程语言。

  • 原型(prototype):每个对象都包含一个原型属性,用于关联另一个对象,关联后就能使用那个对象的属性和方法

    • new创建的对象时,其实是 构造函数.constructor =原型
    • 大部分都具有原型,都继承自Object.prototype的原型
    • null、Object.prototype没有原型对象
  • 原型链:对象之间通过原型关联起来,形成一个原型链
目录
相关文章
|
6天前
|
设计模式 安全 Java
【设计模式】原型模式
【设计模式】原型模式
|
6天前
|
设计模式 Java 关系型数据库
23种设计模式 —— 原型模式【克隆羊、浅拷贝、深拷贝】
23种设计模式 —— 原型模式【克隆羊、浅拷贝、深拷贝】
|
6天前
|
设计模式 Java
Java设计模式【五】:原型模式
Java设计模式【五】:原型模式
19 0
|
6月前
|
设计模式 Java 关系型数据库
认真学习设计模式之原型模式(Prototype Pattern)
认真学习设计模式之原型模式(Prototype Pattern)
39 0
认真学习设计模式之原型模式(Prototype Pattern)
|
6天前
|
设计模式 存储
二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
|
6天前
|
设计模式 Java
【设计模式系列笔记】原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而无需知道其具体类型。这种模式属于对象创建型模式,通过克隆来避免使用new关键字创建对象,提高性能和降低系统的耦合度。
33 6
|
6天前
|
设计模式 Java
小谈设计模式(10)—原型模式
小谈设计模式(10)—原型模式
|
6天前
|
设计模式 Java
23种设计模式,原型模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新的对象,而无需知道如何创建的细节。这种模式的核心思想是基于一个原型实例,通过复制这个原型来创建新的对象
27 7
|
6天前
|
设计模式 Java
设计模式之原型模式
设计模式之原型模式
|
6天前
|
设计模式 存储 JSON
Java设计模式-原型模式
原型模式也是创建对象的一种方式,它一般用在这样的场景:系统中存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂而且耗费资源。这个时候使用原型模式的克隆方式,能够节省不少时间。比如Java 类中提供的`Object clone()`就是原型模式的应用。
31 1
Java设计模式-原型模式