2010-04-13 115 views
3

我有一個有子項目列表的類。有沒有可以複製的設計模式,我可以將這些類應用於這些類,以便我可以從子級訪問父級實例,並且強制執行規則,例如無法將子級添加到多個父級等?父子級關係設計模式

回答

2

嘗試複合設計模式:

http://www.dofactory.com/Patterns/PatternComposite.aspx

要使用這個,你就必須在添加一些代碼來移回樹,它看起來像父,但比其其他應該管用。

只需添加一個屬性,該屬性在添加到樹時可以保存對父元素的引用。如果父級更改,則更新它,如果該節點被刪除,則將其設置爲空。

0

例如,您可以在任何語言的層級字典的幫助下,通過使用複合設計模式來實現父(面板)子(按鈕)關係!這裏是示例python代碼。

面板= DictObject( '面板') 按鈕= window.addChild( '按鈕') 文本字段= button.addChild( '文本')

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;} 
}