what is the difference between pool and prototype patterns?
我刚刚读过《戈兰设计模式》一书中关于创造模式的章节。这些是:
- 工厂
- 抽象工厂
- 原型
- 独生子女
- 建设者
我已经在Github上创建了一个存储库,列出了所有这些内容。我已经找到了其他像我的仓库:
- TMRT/GO模式
- YKSZ/GO设计模式
- Jeanphorn/Go设计模式
有的把
而且,…原型和对象池模式之间有什么区别?它们看起来很像我。
池有助于限制分配的新对象的数量;原型是一种指定如何创建新对象的方法。
对象池与缓存创建的对象实例有关,这些对象实例稍后可以访问。Golang有一个实现(https://golang.org/pkg/sync/pool),主要用于释放垃圾收集器上的压力。通常使用池的方法如下:
在
这个函数可以简单地分配一个空结构,或者如果创建逻辑很复杂,它可以使用原型模式来克隆新的实例。
原型模式更侧重于抽象如何从原型对象创建多个对象的"副本"。当您试图避免使用
设计模式并不孤立地存在,它们有自己的关系。因此,例如,对象池可能使用工厂或原型来最初填充池或处理耗尽。该池中的对象可能符合命令模式,或者是生成器模式的示例。
在实践中,你不可能知道所有模式的所有细节,最重要的是要知道意图。模式实现了什么。当使用模式时,剩余的细节可以并且应该取自模式目录,随着时间的推移,您将全面学习一些模式并参考其他模式。
模式目录是完全文档化的设计模式的集合。GOF设计模式书可能是最著名的模式目录,但是您提到的书甚至Github存储库都可以实现相同的目的。