我可以执行一个好的经验法则或测试来确定一个方法或字段是否属于一个类?如何识别成员何时不属于?
我发现我在面向对象设计中最大的绊脚石是试图弄清楚什么去哪里。答案似乎太多了:“它可以在这里或那里。”
这是我正在努力解决的事情类型的一个简单示例:
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
重新定位这样的方法吗?
编辑:
到目前为止,似乎一致认为 IT 部门不应该了解员工的技能。我将扮演恶魔的拥护者,以说明我的困惑在哪里起作用。
ITDepartment 由两个 Employee 集合组成。它不应该能够委托给那些收集项目吗?AddSkill 方法仍然属于 Employee 类。IT 部门只是指示其员工组为其每个成员添加一项技能。