我正在尝试使用“Facade pattern”设计界面。但正如这里指出的那样:
http://www.scribd.com/doc/6599003/7/Principle-of-Least-Knowledge-PLK
这迫使我在课堂上创建了许多访问者方法。根据上面的链接,作为PLK的变体,我们可以返回接口引用而不是引用具体对象。
我的问题是这是如何解决问题的?一旦我们返回一个接口引用,我们无论如何都需要用适当的类实例化。最终我们最终会从该对象调用一个方法吗?
答案 0 :(得分:0)
说你使用某种模式设计界面听起来就像你在不知道原因的情况下使用模式一样。您正试图解决设计问题吗?如果是,则应该清楚返回接口是否解决了问题。
顾名思义,Facade Pattern用于隐藏您不希望呼叫者看到的内容。隐藏内容的一个很好的理由是复杂性 - 如果你有一些复杂的代码,你可以隐藏外观背后的复杂性,为调用者提供简化的界面。这很好,因为调用者和被调用代码之间的耦合是松散的:如果实现细节发生变化,您可以隐藏外观后面的更改,并且调用者不必关心。
隐藏某些内容的方法之一是隐藏精确类型。假设您有一个实现Foo
和Bar
的类Baz
,以及一个只需要使用Baz
中声明的方法的调用者。然后,隐藏复杂性的一种方法是仅返回接口:“实现Baz
的东西”。然后,来电者不必关心Foo
或Bar
,更好的是,来电者根本无法使用Foo
或Bar
。您可以随意更改Foo
和Bar
,这是一件好事。