对象内的链接是否被视为反模式?

Ton*_*ony 5 c# java language-agnostic class-design linked-list

假设您有一个经常(甚至专门)用作链接列表一部分的类.将链接信息放在对象中是否是一种反模式

例如:

   public class Item
   {
       private Item prev; 
       private Item next;
       ...
   }

经常引用的建议是简单地使用通用容器类(例如java.util.LinkedList在Java中),但是这会产生具有单独节点对象的开销(并且链接对象不能容易地引用其兄弟).

思考?

Edw*_*uck 2

它不一定是反模式。反模式必须具有负面影响才能赢得“反”的权利。

例如,数据结构Node中的a 需要其链接缓存在. 其他任何事情都会违反基于对象责任的数据和代码的封装和本地化这一更重要的概念。TreeNode

另一方面,Customer嵌入其“下一个”客户的数据结构意味着该Customer数据结构正在处理两个不相关的职责,即维护Customer数据的职责和维护Customer列表数据结构的职责。在这种情况下,这两种职责可能会以影响维护便利性的方式混合在一起;因此,将被视为一种反模式。