我對如何通過一對多協會避免Demeter違法行爲感到困惑。比方說,我有一個模型是這樣的:Demeter與一對多協會的法律
class Organization < ActiveRecord::Base
has_one :address
has_many :employees
end
我相信,這將是得墨忒耳定律違反做到這一點:
organization.address.street_name
這可以由具有* address_street_name *方法來避免。這是一個足夠簡單的解決方案。但讓我們說,我們現在這樣做:
organization.employees.each { |employee| puts employee.first_name }
這似乎是違反了德米特法,雖然它不是很明顯看到。您仍在展示員工內部結構的知識。避免這種違規行爲的最佳方法是什麼?