当前位置: 首页 > 知识库问答 >
问题:

为什么(GoF)Flyweight是一种结构(而不是创造)设计模式?

杜阳泽
2023-03-14

根据我的理解,flyweight设计模式与工厂或单例设计模式没有太大区别。

共有1个答案

漆雕昊天
2023-03-14

Flyweight模式的本质不是创建对象,而是共享对象。模式声明要共享的对象通常保存在某个外部数据结构中,但没有指定这些数据结构是如何创建或表示的。

使模式结构化的是使用类似工厂的类来获得Flyweights。这将静态结构强加于设计。

 类似资料:
  • 这个答案几乎描述了问题的前半部分。 上面写着: 看过“四人帮”的定义后,我不相信这有什么真正的区别。(为方便起见包括在内) 装饰器:允许对对象进行动态包装,以便修改它们现有的职责和行为 责任链:通过将接收对象链接在一起,使多个对象有机会处理请求 维基百科对它们做了一些补充,但有些是武断的。 > 装饰器通常作为链表实现。但我认为这太低了,不能被认为是模式的“一部分”。 责任链只处理数据,如果这是他们

  • 在使用来自Java背景的Swift时,为什么要选择结构而不是类呢?似乎它们是一样的,结构提供的功能较少。那为什么选择它呢?

  • 设计模式之Flyweight(享元) Flyweight定义: 避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类). 为什么使用? 面向对象语言的原则就是一切都是对象,但是如果真正使用起来,有时对象数可能显得很庞大,比如,字处理软件,如果以每个文字都作为一个对象,几千个字,对象数就是几千,无疑耗费内存,那么我们还是要"求同存异",找出这些对象群的共同点,设计一个元类,封装可以

  • 问题内容: 我想我需要反射包才能做到这一点。说我有一个像这样的结构: 说我想生成ResolutionValue结构的JSON表示…是否有某种方法可以创建不实例化的JSON表示? 问题答案: 即使使用反射,也需要使用实际值来获取类型。因此,我建议您只使用类型的零值。

  • 本文向大家介绍C++设计模式编程之Flyweight享元模式结构详解,包括了C++设计模式编程之Flyweight享元模式结构详解的使用技巧和注意事项,需要的朋友参考一下 由遇到的问题引出享元模式: 在面向对象系统的设计何实现中,创建对象是最为常见的操作。这里面就有一个问题:如果一个应用程序使用了太多的对象,就会造成很大的存储开销。特别是对于大量轻量级(细粒度)的对象,比如在文档编辑器的设计过程中

  • 本文向大家介绍请问设计模式是什么?相关面试题,主要包含被问及请问设计模式是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使