[英]Facade design pattern usage
在我们的应用程序(C#)中,外观被用作核心的API - 应用程序本身将使用外观来处理核心内容。 知道了,这是我的问题:
谢谢。
外观是一个对象,它为更大的代码体提供了简化的界面。
因此,保持简单。
否。将Facade封装在自身内部。 我假设您有一个私有实现来检索树,在内部使用它,只暴露返回填充对象的公共方法(参见第2点)。
不,外立面应该做所有事情,否则创造它就没什么意义了。 您可能希望创建可在facade方法中使用的DTO,但不应公开核心对象。
关于问题1:正如其他人所说; 相反,请考虑为此操作使用单独的接口( 接口隔离原则可能适用于此处?),并首先通过Facade访问该接口上的操作。 在递归时,可以直接再次使用内部接口。 这可能会提供一些关注点分离,同时还可以在必要时更轻松地更改实现。
听起来好像递归本身就是一个实现细节,而不是外观需要了解的东西。 类似地,外观是实现算法不需要知道的东西(即,不通过外观重复)。
关于问题2:如何为此定义接口? 例如ITree
, ITreeNode
等,并在Facade上包含操作以使用这些操作。 现在让实现实现这些接口,从而提供外观所需的对象而不暴露核心对象。
外观通常包装您的核心并提供对特定功能集的访问。
您可能希望这样做是为了保持一致性,但如果有另一种更简单的方法来保留外观提供的抽象,那就更好了。
不会暴露你的核心代码(这会违反那里的外观的目的)如果你想添加一些功能,那么在你的外观中添加一个函数来调用你的外观中的核心功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.