与子对象共享公共属性

时间:2014-06-13 13:17:25

标签: c# design-patterns

我很确定,这是一个简单的问题,但我现在卡住了。 我有以下设置:

public ParentClass()
{
    public long ID { get; set; }
    public String Title { get; set; }
    public String PropertyA { get; set; }
    public String PropertyB { get; set; }

    public ParentClass()
    {
        _child1 = new ChildClass1();
        _child1.ID = ID;
        _child1.Title = Title;
        _child1.PropertyA = PropertyA;

        _child2 = new ChildClass2();
        _child2.ID = ID;
        _child2.Title = Title;
        _child1.PropertyB = PropertyB;
    }

    private ChildClass1 _child1;
    private ChildClass2 _child2;
}

父类仅用于控制整体行为,子类执行实际工作(每个都是不同的部分)。我希望两个子类都知道ID和标题。但Child1应该只知道PropertyA,而Child2应该知道PropertyB。所以每个孩子都会得到3个属性。我可以使用一些数据对象,但这会导致像_child1.Properties.ID这样的调用...... 是否有最佳实践或模式来解决这类问题?

1 个答案:

答案 0 :(得分:1)

您的代码似乎很好。无需过度复杂化。

在我看来,PropertyA和PropertyB在ParentClass中没有这些属性的支持值,只是在子类中获取和设置公共属性。

一般情况下,最好通过让父级中的getter影响Childclasses中的值来紧密耦合它们,反之亦然,如果您希望它们在其生命周期内不会发散。另一种方法是将它们全部设为readonly