原型设计模式在新的时候使用是昂贵的,但我们在克隆中做新的



我一直在学习各种设计模式。特别是对于原型设计模式,用例指出在调用new时应该使用它是昂贵的。因此使用克隆。但是在clone()函数中,我们最终使用了新的运算符。有人能解释一下这个模式用例的意义吗

假设您有一个对象,其构造函数执行某种昂贵的过程,因此对其执行new操作是不可取的,现在假设您希望对该对象中包含的数据执行单独的操作,您有两个选择:您可以等待一个操作完成,然后将对该对象的引用传递给下一个操作,或者您可以clone()该对象并同时执行两个操作。

您无法避免使用new运算符(至少一次),因为对象必须在某个时间出现。但是,使用clone()成员函数可以避免多次执行此操作。

原型模式的许多示例中似乎忽略了一点,即在许多实现中,这些对象都是缓存的(在哈希表或映射等中),因此第一次需要对象时会产生全部费用,但在所有后续情况下,可以用较少的费用克隆对象。

原型模式非常灵活,它的外观在很大程度上取决于特定系统的需求,在许多情况下,原型和抽象工厂看起来非常相似。

edit克隆比创建新对象更便宜,因为您只需要复制数据,而不是调用一开始就收集/创建数据的昂贵操作,例如在大型数据库上进行多次sql查询或在网站上爬网某些标签等。

相关内容

最新更新