有没有一个很好的经验法则或测试,我可以执行以确定一个方法或领域是否属于一个类?如何识别一个成员不属于什么时候?是否有启发式来确定方法或字段是否属于类中?
我发现我在面向对象设计中唯一最大的绊脚石是试图弄清楚什么去了哪里。似乎有太多的情况,答案是:“它可以在这里或那里。”
这里的事情,我挣扎类型的一个简单的例子:
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