下面的假示例是一个促进轮询过程、存储结果并将其保存到DB的类。我的理解是,这将被认为是一种中介模式,因为它促进了对象之间的通信,否则这些对象将在没有它的情况下耦合。这是准确的,还是会有另一种模式更好地解释这种行为?谢谢!
public class StatusPoller
{
public void Poll()
{
foreach(User user in users)
{
string accessToken = oAuthClient.Authenticate(user); // Authenticate
中介者的设计模式如何,例如:
var mediator = (function(){
var _jobs = {};
function _extractedParams(arguments){
var arr = [];
if (arguments.length > 1){
for (var i=1; i < arguments.length; i++) arr.push(arguments[i]);
}
return arr;
}
function _defaultSubscribeCallback(){
con
我有两堂课。“系统”和“蓝牙”我希望这两个类之间有一个真正松散的一致性,因为它们应该能够存在或不依赖于彼此的存在。
系统类应该能够在蓝牙发送数据时通知蓝牙类,反之亦然,当蓝牙接收到数据并准备被读取时,蓝牙类应该能够通知系统类;
所以,首先,我想出了一个使用观察者设计模式来实现它的想法,因为它既简单又快速。
我使用了基于模板的观察者模式。但我不知道如何做到双向(即系统类和蓝牙类都应该同时成为被试和观察者,以便能够相互观察)。
我想象的代码是:
int main
{
System mySystem();
Bluetooth myBluetooth();
mySystem.atta
自从了解了使用事件聚合器而不是使用事件来发布消息以来,我已经设法在我的代码中处理大多数事件(除了那些将WPF控件属性连接到我的代码的事件)。现在的问题是,我似乎真的用处理程序重载了我的服务。在GitHub周围,我可以看到人们实现了事件聚合器(似乎采用了另一个名称,如总线),并创建了一个类来处理每种类型的消息。
例如:
public class SomeHandler : IHandle<SomeMessage>
{
private readonly IEventAggregator _eventAggregator;
public SomeHandler(IEve
对我来说,许多设计模式的问题似乎都是在现有代码库中实现它们的最佳方法。
代码库是PHP4,它正在被迁移到PHP5 OOP。然而,这是一个正在进行的过程,不太可能很快完成(用户总是想要新的功能!)
在中介模式下,应该在哪里注册事件?
如果使用大量注册事件的脚本创建目录,则可以通过引导加载该目录。
//bootstrap.php
..
new \Listener\Something();
new \Listener\SomethingElse();
new \Listener\SomethingOtherThing();
或者最好在事件被触发之前注册,因为事件可能被触发,但从未注册过。
//use
找不到任何关于这方面的讨论。在JavaScript中,有没有一种方法可以检测到我正在同一个执行块中运行不同的函数,或者我已经在当前执行块中执行了我的函数?
基本上,我需要优化一些浏览器代码,避免它在同一个同步块中运行两次。现在我是这样做的:
var isSaved = false;
function saveUIState() {
if(isSaved === true) {
return;
}
// Some heavy DOM processing
...
isSaved = true;
setTimeout(functi
假设我有一个控制台应用程序或Windows服务,并且使用带有IOC容器的依赖注入(在我的具体情况下,我使用的是Autofac)。
我的IOC容器解析的类之一是一个WorkDoer类,它有一个长期运行的DoWork(Args args)方法。当DoWork(Args args)完成时,将引发一个自定义事件(WorkDone)。在我的例子中,当带有参数的消息从消息队列中取出时,就会触发DoWork。
我也有一个通知类,我希望订阅我的WorkDone事件。
具体而言
public class Notifier
{
public void Subscribe(WorkDoer