Design patterns 原型与Flyweight设计模式

Design patterns 原型与Flyweight设计模式,design-patterns,flyweight-pattern,prototype-pattern,Design Patterns,Flyweight Pattern,Prototype Pattern,我需要找出原型D.p和Flyweight D.p之间的一些差异。 我知道基本的区别在于前者是深度复制。而字母构成了共享对象。 我的讲师说有更多的差异 有人认识其他人吗?首先,他们属于不同的类别:原型是创造性的,轻量级是结构性的 在原型对象的创建过程中,通过克隆,简化了对象的创建。通过请求克隆,我们每次都会创建新的克隆对象 在Flyweight中,通过发出请求,我们尝试通过共享尽可能多的对象来重用它们。如果我们找不到这样的对象,将创建新的必需对象。这是为了优化资源 虽然在原型中我们甚至可以克隆一个

我需要找出原型D.p和Flyweight D.p之间的一些差异。 我知道基本的区别在于前者是深度复制。而字母构成了共享对象。 我的讲师说有更多的差异


有人认识其他人吗?

首先,他们属于不同的类别:原型是创造性的,轻量级是结构性的

在原型对象的创建过程中,通过克隆,简化了对象的创建。通过请求克隆,我们每次都会创建新的克隆对象

在Flyweight中,通过发出请求,我们尝试通过共享尽可能多的对象来重用它们。如果我们找不到这样的对象,将创建新的必需对象。这是为了优化资源

虽然在原型中我们甚至可以克隆一个对象,但在应用程序中使用大量对象时,使用Flyweight模式是有意义的


所有描述都会对实现端产生影响。

在Flyweight中,对象是不可变的。
在原型中,对象是可变的

Flyweight通过不创建新对象和尽可能重用现有对象来节省内存。
原型是关于重用现有对象以节省创建新对象的成本

创建多种类型的单个对象时使用Flyweight。

Prototype用于创建单一类型的单一对象。

flyweight是一种模式,用于在实例之间共享基础数据,以节省空间和时间。原型是一种创建抽象模式。因此,它们参考并用于不同的设计模式参考书,原型在第133页,Flyweight在第218页我都知道。但是我不能理解它们之间的区别,我想我说的是。JS原型继承与flyweights非常相似,但原型模式是完全不同的。GoF的书从未将flyweights定义为不可变的。它们可以是可变的。