Eig*_*ght 3 xml language-agnostic dom design-patterns
我有一个以下对象模型:
- Book -- Chapter 1 --- Page 1 ---- Image 1 ---- Image 2 ---- Text 1 --- Page 2 ...
资源在页面级别下降.但是,从资源的角度来看,我需要知道资源的完整路径.
一种方法是让资源了解他们的父母.
所以我的Image对象可以有一个"parentPage"属性,而该属性又可以有一个"parentChapter"属性.这样,我可以通过currentImage.parentPage.parentChapter访问完整路径.有没有更好的办法?
关于为什么我需要从资源的角度了解完整路径的几句话.我有一个在屏幕上行走和渲染的对象模型.渲染器从章级别一直下降到元素/资源级别(这是渲染发生的位置).但是,要显示资源,我需要知道它们的存在位置(即磁盘上的实际路径),并且通常在章级别指定此信息.
谢谢!
- 编辑 - 只是为了澄清,这个parent.parent方法是最好的吗?它迫使儿童对象了解父母,这让我感到不舒服.耦合?
我建议使用树结构,而每个类都继承自树节点.
c#中的示例:
class TreeNode {
public TreeNode Parent { get; set; }
public List<TreeNode> Children { get; set; }
}
class Book : TreeNode {
... book attributes ...
}
... other classes ...
Run Code Online (Sandbox Code Playgroud)
实际上,如果你担心耦合这个问题,那么问题就是好耦合还是坏耦合?如果耦合实际上增加了价值并且有合理的理由去做,那就去做吧.如果没有,那就浪费了代码.如果您使用支持泛型的语言,则可以将其分离得更远:
class TreeNode<TParent, TChild>
{
public TParent Parent { get; set; }
public List<TChild> Children { get; set; }
}
class Book : TreeNode<object, Chapter> { }
class Chapter : TreeNode<Book, Page> { }
class Page : TreeNode<Chapter, object> { }
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |