Talk:Law of Demeter
Line 27: | Line 27: | ||
− | But now I'm a bit confused as to which approach is best? Ken Auer would say that the second approach is messy because it's not using a getter for the engine object. Maybe the getter could be set as private and the start() method in the Car class could look like this... | + | But now I'm a bit confused as to which approach is best? Ken Auer would say that the second approach is messy because it's not using a getter for the engine object. Maybe the getter in the first design could be set as private and the start() method in the Car class could look like this... |
start() | start() |
Revision as of 08:46, 12 August 2008
I started this page with a short description and basic solution...a couple of days ago --Kris 03:34, 1 August 2008 (UTC)
Just added an example --Kris 00:28, 3 August 2008 (UTC)
I spoke to Wal just after the lecture and we were talking about the Law of Demeter, and a situation arose which I have documented below in the UML diagram.
It is possible that in this design you could say...
car.getEngine().start()
But the Law of Demeter states that generally more than one dot in a line of code is a sign that the law has been broken.
We also talked about another way this design could be approached in order to satisfy the Law of Demeter. The below design would satisfy the law because the start() method in the Car class could look a little something like this...
start() { engine.start(); }
But now I'm a bit confused as to which approach is best? Ken Auer would say that the second approach is messy because it's not using a getter for the engine object. Maybe the getter in the first design could be set as private and the start() method in the Car class could look like this...
start() { getEngine().start(); }
What does everyone else think? --Geoffrey Clark 08:43, 12 August 2008 (UTC)