Я недавно немного читал и столкнулся с Законом Деметры. Теперь то, что я прочитал, имеет смысл, например, разносчик газет никогда не должен быть в состоянии сунуть деньги в карман клиента, схватить кошелек и вытащить деньги. Кошелек - это то, что клиент должен контролировать, а не разносчик газет .
Что подводит меня к закону, может быть, я просто неправильно понимаю, что струнные свойства вместе с иерархией функций / информации могут быть очень полезны. например .NET HTTPContext класс.
Не код, такой как:
If DataTable.Columns.Count >= 0 Then
DataTable.Columns(0).Caption = "Something"
End If
Или
Dim strUserPlatform as string = HttpContext.Current.Request.Browser.Platform.ToString()
Или
If NewTerm.StartDate >= NewTerm.AcademicYear.StartDate And
NewTerm.EndDate <= NewTerm.AcademicYear.EndDate Then
' Valid, subject to further tests.
Else
' Not valid.
End If
1015 * нарушать этот закон? Я подумал (возможно, ошибочно), что цель ООП частично заключалась в том, чтобы обеспечить доступ к связанным классам в хорошей иерархической структуре.
Мне нравится, например, идея ссылки на служебный инструментарий, который может использоваться классами страниц, чтобы избежать повторяющихся задач, таких как отправка электронных писем и инкапсуляция полезных строковых методов:
Dim strUserInput As String = "London, Paris, New York"
For Each strSearchTerm In Tools.StringManipulation.GetListOfString(strUserInput, ",")
Dim ThisItem As New SearchTerm
ThisItem.Text = strSearchTerm
Next
Любая ясность была бы велика ... в настоящий момент я не могу смириться с тем, что закон, по-видимому, запрещает связывать свойства и методы вместе ... мне кажется странным, что так много власти следует игнорировать? Я довольно новичок в ООП, как могли догадаться некоторые из вас, поэтому, пожалуйста, будьте спокойны:)