问题标签 [facade]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3634 浏览

c# - 自动生成强类型 AppSettings 类

首先是这个问题:

这可能吗?我从Joe Wrobel 的工作(被遗忘的Codeplex 项目的还原版)中汲取灵感。在这里,您为提供者创建配置文件,它为它创建强类型,有效地为 Profile 类创建外观。

现在是背景故事!

我真的不喜欢魔法弦。它们非常糟糕,在更新应用程序时可能会导致一些严重问题。曾使用 PHP 和 ColdFusion 等语言工作过,我知道很容易将它们放入您的应用程序中并在需要更改之前忘记它们。然后你必须追捕它们的每一个变化并相应地改变它们。

如果您遵循“开箱即用”的应用程序模板,.NET 并没有那么好。许多示例使用 web.config 中的 appsettings 来存储各种设置。这确实是一个存储的好地方,非常适合大多数应用程序。然而,当你开始直接调用这些时,问题就开始出现了——例如ConfigurationManager.AppSettings["MyAppSetting"]。然后,当您重新使用魔术字符串时,您的情况并不比 PHP 用户好。

这就是外观的用武之地。外观提供了一种从一个地方的魔术字符串创建强类型对象的方法,并让开发人员从应用程序的其余部分引用它。

现在,我不再使用 web.config 来包含我的 appsettings,而是使用数据库来保存它们。在应用程序启动时,检索名称/值组合,然后按顺序将其添加到ConfigurationManager.AppSettingsvia Set。没什么大不了的(除了我之前遇到的问题!)。

我的数据层、服务层和表示层可以访问这个“应用程序外观”,并保存诸如应用程序模式、使用 yada yada yada 的服务端点之类的东西,并限制了必须寻找许多魔术字符串的需要,减少到两个魔术字符串 - 一个(名称)在外观中,另一个(名称和值)在创建点(对我来说是 db)。

这个外观类最终会变得相当大,我最终会厌倦不得不更新它们。

所以我想做的是有一个 ApplicationFacade 类,它会在每次构建完成时自动生成。现在回到开始……这可能吗?

0 投票
1 回答
310 浏览

c# - 如何订阅外观类中的事件

我有两个项目 1:Windows 窗体项目和 2:递归遍历文件系统以查找特定文件的业务逻辑项目。

我希望 windows 项目订阅一个隐藏在一个名为 recurse 的类中的事件。我遇到的问题是递归类的实例在业务逻辑项目的外观类中实例化。

windows 窗体项目通过外观调用业务逻辑,如下所示:

在项目 2 中,FileAnalyzerFacade() 创建了 Recurse() 类的实例。Recurse() 类在找到文件时引发事件。所以windows窗体对Recurse()类一无所知,只知道外立面FileAnalyzerFacade()。

门面有以下订阅:

当事件被触发时,analyzeFile() 就会运行。

这一切都很好,因为 FileAnalyzerFacade() 创建了递归类的实例。如何让 windows 项目订阅递归类中引发的事件?

0 投票
3 回答
3687 浏览

language-agnostic - 立面图案的使用

我怎么知道在我的应用程序开发中我需要一个外观模式?

如何在外观图案和模板图案之间划清界限?

例如:在[this]文章中,我们看到,int placeOrder(int CustomerID, List<BasketItem> Products)算法中有许多预定义的步骤。那么作者为什么不在这里使用模板模式呢?

0 投票
1 回答
276 浏览

model-view-controller - 如何在没有对象构造的情况下使用 Facade.Instance 方法?

我最近才完成了一个关于软件模式的单元,现在正在尝试理解 PureMVC 框架。然而,有一件事让我很困惑,这对这里的大师来说很简单。

我正在尝试创建单例 Facade 类的实例。在构造函数中,注释状态:

这个IFacade实现是一个Singleton,所以不应该直接调用构造函数,而是调用静态的Singleton Factory方法Facade.Instance

当 Facade 对象还没有被创建的时候,你怎么能调用实例方法呢?

Facade.Instance 方法如下所示:

0 投票
2 回答
65 浏览

repository - 对象模型中的“观点”

我们有两种域类型:用户位置

我们在LocationRepository上有一个方法:GetUserLocations()

现有实现:

对我来说,从User类型中检索与用户关联的位置更有意义,即:

我认为后一种实现读起来更清晰,作为 API 客户端,我必须处理更少的类型(即不需要LocationRepository )。另一方面,将有更多代码需要维护,因为我必须将“外观”写入LocationRepository

我应该按照自己的直觉行事并在User类型上创建LocationRepository的外观,还是应该对现状感到满意并接受让我“感觉”错误的序列图(即检索位置信息的感觉就像是从错误的“观点”检索)?

0 投票
1 回答
992 浏览

c# - 外观设计模式和子类化

我正在为 C# 程序使用外观设计模式。该程序基本上看起来像这样......

现在,我想将我的方法分为三类:角色、配置文件和成员。这在开发人员眼中会更容易,因为 Profile 和 Membership 都公开了很多看起来相似的方法(还有一些是 Role)。例如,获取用户 ID 如下所示:

有人可以“说明”在这种情况下子类化应该如何工作以达到我正在寻找的效果?

提前致谢。

0 投票
3 回答
8401 浏览

design-patterns - 立面图案与其他图案的区别

我有一个关于模式的问题。我真的有设计模式的问题。你能告诉我外观模式和构建器、工厂和抽象工厂模式之间的区别吗?

0 投票
16 回答
41323 浏览

design-patterns - 外观和适配器模式有什么区别?

我一直在阅读这两个定义,它们似乎完全相同。谁能指出他们的区别是什么?

谢谢

0 投票
2 回答
148 浏览

facade - 我应该从外观类中分离数据吗?

我正在制作 HomeCAD 的“后端”引擎。我有一个可以做很多事情的外观类。但是我应该从该类中分离数据(如对象数组)吗?非常感谢

0 投票
1 回答
248 浏览

list - 它是否打破了外观设计模式

在 HomeCADEngine 外观类中,我有一个方法“addRoom(room:Room)”,它会将这个房间添加到 ArrayList。但是,当我们在外观类之外创建一个房间然后将其传递给 addRom() 方法时,它是否打破了外观模式?

非常感谢