2008年10月7日 星期二

OOAD(7): 常見的 check

繼承是因為行為發生變化

如果不是行為發生變化,就不值得繼承

善用適合的類別作為屬性

如果子類別只是較父類別多了一些屬性,而非行為發生變化,則可考慮使用Dictionay 作為屬性,而不要子類別了。

舉例來說,下面的程式是不好的。

class Parent
{
   public string Name;
   public void Fly();
}

class Child1 : Parent
{
   public string Color;
   public string AliasName;
}

class Child2 : Parent
{
   public string BackColor;
}

class Child3 : Parent
{
   public string BorderColor;
}

原因是 Child1, Child2, Child3 在行為上根本不會發生變化。還是只有 Parent 的Fly。因此,只需要修改成下面的程式,就不需要子類別了。

class Parent
{
   public string Name;
   public void Fly();
   public Dictionary  OtherProperties {get; set;}
}

沒有留言:

Share with Facebook