5. 原型模式(Prototype)

问题:创建对象成本高(属性多或计算复杂),想基于已有对象克隆。

核心:通过克隆已有实例来创建新对象,而不是从头 new

const prototype = {
  greet() { return `你好,我是${this.name}`; },
  clone() { return Object.create(this); }
};

const personA = prototype.clone();
personA.name = '小明';

const personB = prototype.clone();
personB.name = '小红';

console.log(personA.greet()); // 你好,我是小明
console.log(personB.greet()); // 你好,我是小红
package prototype

import "fmt"

type Prototype interface {
  Clone() Prototype
  Greet() string
}

type Person struct {
  Name string
  Age  int
}

func (p *Person) Clone() Prototype {
  return &Person{Name: p.Name, Age: p.Age}
}

func (p *Person) Greet() string {
  return fmt.Sprintf("你好,我是%s", p.Name)
}

JavaScript 的原型链本身就是这个思想的体现。Object.create() 是最直接的原型克隆方式。