Có quy tắc hay về ngón tay cái hoặc thử nghiệm tôi có thể thực hiện để xác định xem một phương thức hoặc trường thuộc về một lớp không? Làm thế nào để xác định khi một thành viên không thuộc về?Có heuristic để xác định xem một phương pháp hoặc lĩnh vực thuộc về một lớp học?
Tôi thấy rằng trở ngại lớn nhất của tôi trong thiết kế hướng đối tượng là cố gắng tìm ra điều gì xảy ra ở đâu. Dường như có quá nhiều trường hợp câu trả lời là: "nó có thể đến đây hoặc ở đó".
Dưới đây là một ví dụ nhanh chóng của các loại điều tôi đang phải vật lộn với:
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
Đối tượng ITDepartment
quản lý 2 nhóm Employees
... nhưng nó nên biết rằng Employees
có kỹ năng? Một phương pháp như AddSkillToGroup
có được di chuyển không?
EDIT:
Dường như sự đồng thuận vậy, đến nay là ITDepartment không nên biết về kỹ năng của nhân viên. Tôi sẽ đóng vai người bảo vệ của Ma Quỷ một chút để minh họa nơi sự nhầm lẫn của tôi xuất hiện.
ITDepartment bao gồm hai bộ sưu tập Nhân viên. Không phải nó có thể ủy thác cho những mặt hàng đó? Phương thức AddSkill vẫn thuộc về lớp Employee. ITDepartment chỉ đơn giản là hướng dẫn nhóm nhân viên của mình thêm một kỹ năng cho từng thành viên của nó.
Bạn có yêu cầu NẾU bạn nên ủy quyền không? Câu trả lời luôn là "có". Hay bạn đang yêu cầu LÀM THẾ NÀO? Nếu có, vui lòng sửa câu hỏi của bạn. Hay bạn đang hỏi một số câu hỏi khác về phái đoàn? –
Tôi tự hỏi liệu nó có ổn cho lớp ITDepartment để "tiếp cận" và ủy nhiệm cho lớp Employee qua Danh sách (Of Employee) mà nó bao gồm (giống như khi nó gọi e.AddSkill ở trên). –