问题标签 [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.
node.js - 我需要帮助在使用 MongoDB(和猫鼬)的 NODEJS 程序中实现 Facade+Mediator 以实现持久性
我非常喜欢玩 NodeJS 和 MongoDB。我想构建一些可能是一个非常大的应用程序的东西。所以我尝试尽可能多地解耦设计应用程序。
我认为抽象持久层以使业务逻辑不知道数据是如何存储的会很好(我不确定将来是否必须将 MongoDB 换成 RDBMS)。知道这一点后,我考虑过创建一个具有数据存储所需操作的 FACADE,使用 Mediator 赞助人订阅 FACADE 操作并实施它们。该中介将使用事件侦听器连接到外观,而外观将使用事件发射器。然后,订阅中介者的模型将包含所有猫鼬模式,并将负责所有数据库/持久性问题。(有意义吗?)
我看到猫鼬对数据模型非常严格。IE。我看到预计我不会有一个 Player 原型,而是一个 PlayerSchema 和一个 PlayerModel。所以:
- 我应该使用猫鼬数据模型吗?(这样做有什么限制/问题吗?-除了如果我关闭数据库就必须重写它们-)
- 我应该将猫鼬数据模型转换为我的业务逻辑原型(通过这个 FACADE 组件)吗?我应该尝试另一个 ORM 来访问 MongoDB 数据吗?
我真的很想进行这些抽象,因为我对 JavaScript、Node 和所有这些技术都很陌生(所以我想测试隔离的每个部分,并且如果我看到有更好的解决方案能够切换层)。
任何建议都将受到欢迎!
design-patterns - 嵌入式系统的外观与适配器模式
阅读 Elecias White 的书“制作嵌入式系统”(来自 O'Reilly)让我感到困惑,因为这两个术语:外观和适配器模式。她对两者的解释根本不清楚。
适配器模式(Pag,19):“(......有时称为包装器)它将对象的接口转换为对客户端更容易的接口......通常,适配器是在软件 API 上编写的,以隐藏丑陋的接口。 ……”。
外观模式(第 86 页):“……它为一段代码提供了简化的接口……”。然后它说“......适配器模式是外观模式的更通用版本”。
可悲的是,这两个术语似乎与我相似。
根据本网站(和其他)中的其他定义,大多数人说“适配器模式使两个不兼容的接口兼容”。在这种情况下,“不相容”一词是什么意思?
大多数网站和书籍从嵌入式系统的角度以外的更高级别(纯 C,而不是 OOP)给出了关于模式的定义,因此给出的示例确实不清楚。
值得一提的是,虽然这本书是一本极好的知识来源,但对于新手和专业人士来说,它并没有包含这么多代码,所以人们应该弄清楚这种定义。
我试图通过我为自己写的几个例子来理解它们,你能指出我的理解是否正确吗?
示例 1,外观模式:
示例 2,适配器模式:
希望我自己解释得足够好。先谢谢了!!
jsf-2 - JSF2.0 State_Saving_Method 客户端问题
我正在使用 Mojarra 2.1.3、Netbeans 7.0.1、primefaces 3.2。
我目前很纠结是使用 STATE_SAVING_METHOD 客户端还是服务器。目前我将保存方法设置为客户端。这涉及到我对许多对象的可串行性进行调整。并将瞬态关键字放在无状态外观会话 bean 上。
我的 xhtml 页面有一个带有分页的 primefaces 数据表。第一次加载页面时,它通过在数据表中显示第一页来工作。但是,单击下一页时,此行会引发 NullPointerException 错误。
这是为什么?是否因为 saProductFacade @EJB 属性声明为瞬态,并且在回发到同一页面时被销毁。无论如何,ViewScoped 托管 bean 仍然存在。请帮忙,如何解决这个问题?还是我做错了?
有关信息,如果我将 STATE_SAVING_METHOD 设置为服务器,这将非常有效。但是浏览器后退按钮的危险使我决定使用客户端状态保存选项。而且,服务器上的内存限制保证了客户端状态的保存。
asp.net - 表单身份验证 Cookie 和 WCF
我有一个 asp.net 4.0 应用程序(客户端),它对 http 外观进行 ajax/json 调用,然后将调用传递给我们的 wcf 服务层。
用户必须使用表单身份验证在客户端上进行身份验证。然后的想法是身份验证cookie将被传递给http门面并可以在http门面访问。[基于 Dino Esposito 的书设计 - Microsoft ASP.NET 和 AJAX:架构 Web 应用程序]
问题是,在外观上,HttpContext.Current.User.Identity.Name 是一个空字符串,而 IsAuthenticated 是假的。
我通过将以下内容添加到我的 web.config(http 外观级别)中的 system.ServiceModel 部分来启用兼容性:
我用以下内容装饰了我的服务:
当我在 ajax/facade 应用程序中调试时,我可以看到 HttpContext.Current.Request.Cookies 中存在 cookie。似乎正在使用匿名而不是我的经过身份验证的用户。
两个应用程序都在同一个 IIS 服务器上运行。
对启用 AJAX 的 wcf 服务的调用是通过 serviceProxy.js 进行的。也许这个方法没有传递必要的cookie?
WCF 跟踪当前显示 '..ASPXANONYMOUS=.....; ASP.NET_SessionId=....; .ASPXAUTH=.....' 在消息日志中。
我觉得我错过了一些简单的东西,但离问题太近了。
欢迎任何建议。
c# - 如何将事件从外观附加到另一个类
假设我的 Facade 类有两个子系统类。每个子系统都有不同的事件。
FacadeClass 是
和子系统类 1
然后是 SubsystemClass2
假设我有另一个使用外观类的类,我想附加来自 SubsystemClass1 和 SubsystemClass2 的事件。问题是如何附加事件而不在外观类中重新定义它,也不使用子系统类(如果有的话)?
在外观类中重新定义它的示例
使用子系统类的示例,将它们都设为公共
提前致谢,
问候布赖恩...
service - 服务外观(根据 Adam Bien)- EJB 3
我读过 Adam Bien Rethinking Business 层。它提到了创建一个服务外观,例如 OrderService。但是,您能否为大型企业应用程序提供许多服务外观。我有客户模块、订单模块、运输模块,我可以为每个高级模块创建一个服务外观,而不是创建一个包含所有这些模块的大外观。因此,在我的 JSF 2.0 Web 应用程序中,我可以拨打如下电话: transportServiceFacade.findDetails() orderServiceFacade.findDetails()
而不是这样做
genericServiceFacade.findDetails()
在我的示例中,我宁愿使用许多外观。这会影响性能吗?
c# - 外观设计模式使用
在我们的应用程序(C#)中,外观被用作核心的 API - 外观将被应用程序本身用来与核心做一些事情。知道了,这是我的问题:
- 假设我的一个核心对象,它的外观包装,有一个递归位?例如,facade 提供了来自树的“GetX”,每个节点都需要从其子树中 GetX。该节点是否应该使用外观的“GetX”?
- 外观是否应该向应用程序公开核心对象?例如,用户想要构建一棵树、添加节点、打印树、计算树等。应用程序应该使用树对象还是应该请求外观创建、保存、打印等等?
谢谢。
php - 类外观将在我的目录 MVC 中的什么位置?
我有一个与设计模式有关的问题,我正在用 php 开发一个 MVC 应用程序,但我不知道类门面在哪里,如果我使用的是 mvc 模式,我认为门面必须在模型中,但是我不知道??,在哪里放置类门面?
或者我已经将外观放在另一个文件夹中?您如何使用 MVC 组织设计模式外观?
谢谢回答
c# - 应用程序外观模式的最佳实践
我有一个多层 SOA 应用程序和一个包含 100 多个表的数据库。我正在为我的数据层使用实体框架,它负责所有 CRUD 操作。
我有 1 个外观类,它托管在服务上,可由客户端应用程序调用。
这个外观类包含诸如
并且外观类基本上充满了类似于 DoSomething() 的其他方法
所以客户端基本上会创建一个外观类的实例,并获得对所有这些方法的访问权限。
我现在的问题是,这是外观模式的最佳实践吗?我觉得外观类太“重”了,如果我的应用程序规模更大,我不确定它是否会影响性能。
如果我有很多方法,创建外观类的实例会是一项非常昂贵的操作吗?
c# - 如何在 C# 中实现外观模式并物理隐藏子系统
在 Java 中实现外观模式时,我可以通过使用 package-private 修饰符轻松隐藏外观的子系统。结果,只有一个小接口可以从外观/包外部访问,子系统的其他类不可见。
如您所知,C# 中没有 package-private 修饰符,但有一个类似的修饰符,称为 internal。根据文档,定义为 internal 的类只能在同一个 assembly 中访问。
据我了解,我必须创建至少两个程序集(实际上是两个 .exe/.dll 文件)才能在物理上隐藏外观的子系统。在物理上,我的意思是类 a) 不能从外部实例化,并且 b) 不会由外观外的智能感知显示。
- 我真的必须将我的小项目拆分为一个 .exe 和一个 .dll(用于外观),以便 internal 关键字起作用吗?我的门面子系统只包含 2 个类,一个自己的 .dll 似乎是矫枉过正。
- 如果是,Visual Studio 中将我的外观外包给它自己的程序集的最佳实践方式是什么?
不要误会我的意思,我没有真正需要将我的程序分成几个程序集。我只想从 IntelliSense 隐藏我的外观后面的一些类,并防止从外部实例化。但如果我没记错的话,没有比这更简单的方法了。