gpt4 book ai didi

performance - 原型(prototype)与享元

转载 作者:行者123 更新时间:2023-12-04 18:04:47 26 4
gpt4 key购买 nike

我开始学习设计模式。我知道原型(prototype)是用来制作我已经拥有的对象的精确副本,而享元是用来制作类似的对象。

我已经编写了 2D 平台游戏,例如马里奥(Java)。有很多相同的敌人,唯一的区别是他们的位置[x,y] .还有由大量矩形 build 的墙,唯一的区别是它们的位置[x,y] .

在这种特殊情况下使用其中一些设计模式是否明智?我应该使用原型(prototype)通过cloneable克隆对象然后设置[x,y] ?

使用享元是否更好 - 当我需要新对象时,我只需从我的哈希图中返回它们,然后设置 [x,y]?

在这两种情况下,我都避免使用 new 运算符,但我不确定使用哪一个。

最佳答案

你有点误会了。 Prototype用于创建新实例,Flyweight用于允许共享实例。

不是最好的例子,而是游戏方面的 Prototype意味着你有一个 EnemyPrototype (或几个),然后您从中创建一个新敌人。在一个简单的实现中,这将复制所有数据,包括图形。因此,对于 100 个敌人,您将在内存中拥有 100 次相同的图像(这不是一件好事)。

至于Flyweight ,您将共享图​​形。 Flyweight 并不是一个很好的例子模式,因为不需要这种模式就可以更容易地解决它(只需从 map 或工厂或其他任何地方获取对图像的引用)。

至于避开new运营商,没必要。使用 clone() 没有任何优势超过 new ,而是有一些缺点。

关于performance - 原型(prototype)与享元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32153502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com