有沒有一個很好的經驗法則或測試,我可以執行以確定一個方法或領域是否屬於一個類?如何識別一個成員不屬於什麼時候?是否有啓發式來確定方法或字段是否屬於類中?
我發現我在面向對象設計中唯一最大的絆腳石是試圖弄清楚什麼去了哪裏。似乎有太多的情況,答案是:「它可以在這裏或那裏。」
這裏的事情,我掙扎類型的一個簡單的例子:
Public Class ITDepartment
Private _sysadmins As List(Of Employee)
Private _developers As List(Of Employee)
// properties, public stuff...
Private Sub AddSkillToGroup(ByVal emps As List(Of Employee), ByVal skill As Skill)
For Each e As Employee In emps
e.AddSkill(skill)
Next
End Sub
End Class
的ITDepartment
對象管理的2組Employees
...但它應該知道,Employees
有技能?像AddSkillToGroup
這樣的方法應該重新定位嗎?
編輯:
看來這個共識到目前爲止是,ITDepartment不應該瞭解員工的技能。我會扮演魔鬼的擁護者來說明我的困惑在哪裏發揮作用。
IT部門由兩個員工集合組成。它不應該能夠委託給那些收集物品嗎? AddSkill方法仍然屬於Employee類。 IT部門只是指示其員工組爲每個成員添加技能。
你問如果你應該委託?答案總是「是」。還是你問如何委託?如果是這樣,請解決您的問題。還是你問關於代表團的其他問題? – 2009-02-25 19:32:47
我想知道ITDepartment類是否可以「通過」,並通過由它組成的List(Employee)來委託給Employee類(就像它在調用上面的e.AddSkill時所做的那樣)。 – 2009-02-25 20:34:59