擅长:python、mysql、java
<p>精心设计的课程在某种程度上使问题变得复杂起来。这在某种程度上取决于您要做什么,或者具体地说,您正在使用的对象图是如何定义的。从<code>breakfast</code>跳到{<cd2>}是不自然的……你不太可能直接跳到早餐总量中的蛋黄孩子身上。在</p>
<p>在这种情况下,合同很可能是早餐会提供<code>egg</code>对象,因此您将返回,然后在需要时从那里获取蛋黄(但这只涉及<code>egg</code>对象…<code>breakfast</code>不再关心。在</p>
<p>如果出于某种原因,你确实想一直抓住蛋黄,那么你应该使用委托。你永远不希望你的客户机代码比它必须或应该关心的更多(上面的德米特法则),你永远不想有任何东西,除了定义和管理的API泄漏到客户端代码。在</p>
<p>一个更合理的例子是假设你早餐时有不同形式的鸡蛋,因此鸡蛋可能来自盘子,或者一个小的煮鸡蛋架,或者来自一个玻璃“岩石”风格。在这种情况下,客户机代码仍然只需要鸡蛋,所以您需要使用委托,并从适当的盘子、支架或玻璃孩子中取出鸡蛋。</p>
<p>它可以归结为定义您向客户机代码公开的内容,并确保任何行李或实现细节都由接收对象处理和抽象。你总是想根据你所交付的东西而不是它的来源来工作。在</p>