2010-04-13 4 views
3

하위 항목 목록이있는 클래스가 있습니다. 자식에서 부모 인스턴스에 액세스 할 수 있도록이 클래스에 적용 할 수있는 디자인 패턴이 있습니까? 여러 부모에게 자식을 추가 할 수없는 등의 규칙이 적용됩니다.상위 하위 클래스 관계 디자인 패턴

답변

2

복합 디자인 패턴을 시도해보십시오

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

이를 사용하려면 다시 모습 부모를 나무 위로 이동하려면 몇 가지 코드를 추가해야합니다,하지만 그 이외의 작동해야합니다.

트리에 추가 될 때 상위 요소에 대한 참조를 보유하는 속성을 추가하기 만하면됩니다. 부모가 변경되면 업데이트하고, 노드가 제거되면 null로 설정하십시오.

0

예를 들어 모든 언어의 계층 적 사전을 사용하여 복합 디자인 패턴을 사용하여 상위 (패널) 하위 (버튼) 관계를 구현할 수 있습니다. 여기 샘플 파이썬 코드입니다.

패널 = 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;} 
}