我有一个包含子项列表的类。是否有我可以复制的设计模式,我可以应用于这些类,以便我可以从子进程访问父实例,并强制执行规则,如无法将子项添加到多个父项等?
答案 0 :(得分:2)
尝试复合设计模式:
http://www.dofactory.com/Patterns/PatternComposite.aspx
要使用此功能,您必须添加一些代码以将树移回到它看起来的父级,但除此之外它应该可以工作。
添加一个属性,该属性在将父元素添加到树中时保存对父元素的引用。如果父更改,则更新它,如果删除该节点,则将其设置为null。
答案 1 :(得分:1)
这样的事可能吗?
public class Parent
{
public Parent()
{
_children = new List<Child>();
}
private IList<Child> _children;
public IEnumerable<Child> Children
{
get
{
return _children;
}
}
public void Add(Child child)
{
if (_children.Contains(child)) return;
if (child.Parent != null && child.Parent !=this) throw new Exception ("bla bla bla");
_children.Add(child);
child.Parent = this;
}
public void Remove (Child child)
{
child.Parent = null;
_children.Remove(child)
{
}
public class Child
{
public Parent Parent
{
get { return _parent;}
protected internal set { _parent = value;}
}
答案 2 :(得分:0)
panel = DictObject('panel') button = window.addChild('button') textfield = button.addChild('Text')