标签: observer-pattern

自定义事件(观察者模式)

我找不到如何实现这个(我为自由式记录道歉):

//assign the event handler for the object "myObj"     
myObj.onMyEvent = //do something

//if something happened somewhere, then run the event
MyEvent.fire();
Run Code Online (Sandbox Code Playgroud)

我们的想法是调用(生成)一些自定义事件(MyEvent).我们有一个对象"myObj"能够识别"MyEvent"的出现,并以某种方式(以他自己的方式)来响应它.另外,我们有其他对象(不同的排序),(以他们自己的方式)对"MyEvent"作出反应.

我知道有"观察者模式",但我找不到具体的实现.

你能告诉我在哪里读一下吗?或者在自然界中一般不可能?或者完全不同?

更新1:没有JS库,请(jQuery,Prototype,YUI,...)

javascript custom-event observer-pattern

3
推荐指数
1
解决办法
2936
查看次数

Magento - 加载页面后执行的最后一个事件名称

在我的自定义模块中,我在会话变量中设置了一个标志,并且在controller_action_layout_render_before事件中,检查是否设置了标志然后附加自定义内容.

我想在页面加载后取消设置会话变量中的标志.

怎么做到呢.

当页面加载时,是否有任何事件在最后执行?

events magento observer-pattern

3
推荐指数
1
解决办法
2081
查看次数

如何在Magento中调试我的事件观察器?

我的观察者没有被召唤.我想知道如何调度事件以便我可以调试它.

events magento observer-pattern

3
推荐指数
1
解决办法
5617
查看次数

Netbeans警告事件注入

我在我的LanguageOfSystem bean中使用CDI Observer模式.

@Named(value = "languageOfSystem")
@SessionScoped
public class LanguageOfSystem implements Serializable {

   @Inject private JsfUtils eeJsfUtils;
   @Inject private Event<LangEvent> langEvent;
   private LangEvent docLangEvent = new LangEvent();
Run Code Online (Sandbox Code Playgroud)

LangEvent的简单地说:

package jav;

import java.util.Locale;

public class LangEvent {
   private Locale locale;

   public Locale getLocale() {
      return locale;
   }

   public void setLocale(Locale locale) {
      this.locale = locale;
   }
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但NetBeans给了我一个警告: 在此输入图像描述

Unstatisfied dependency: no bean matches the injection point.
Run Code Online (Sandbox Code Playgroud)

我应该检查或更改一些东西吗?

warnings netbeans cdi observer-pattern

3
推荐指数
1
解决办法
3434
查看次数

当观察者变为零时,观察者会自动删除吗?

我已经addObserver:selector:name:object:进入了viewDidLoad.

我正在用removeObserver:name:object:viewWillDisappear:animated:来移除观察者.

如果我通过传递错误的参数来删除观察者,会发生什么removeObserver:name:object:
(例如,如果我向参数name或错误对象传递错误通知,则不会删除观察者objectObserver)

如果观察者在调用后仍然不是nil removeObserver:name:object:,我可以发现删除观察者失败,因为notifySelector将被调用.

但如果观察者在打电话后变为零removeObserver:name:object:,我就无法确定是否移除观察者是否失败.

当观察者变为零时,观察者会自动移除吗?
或做notification dispatch tableNSNotificationCenter越来越大,大,并最终应用变得慢?

编辑

当我为观察者使用UIViewController对象的子类时,在dealloc调用ViewController之后应用程序不会崩溃.
但是当我使用其他类的对象时,应用程序会在dealloc调用对象后崩溃.

iphone objective-c ios observer-pattern

3
推荐指数
1
解决办法
2222
查看次数

公告如何与经典的Smalltalk-80相关/更改/更新机制相关?

使用Pharo Smalltalk中的Announcements框架,是否还有理由使用经典的Smalltalk-80相关/更改/更新机制?

smalltalk pharo observer-pattern

3
推荐指数
1
解决办法
482
查看次数

在Smalltalk/VisualWorks中实现观察者模式

我是用模式编程的新手,我花了几个小时搜索模式观察者的Smalltalk实现的样本但是徒劳无功.如果有人能够在Smalltalk下为我提供这种模式实现的具体示例,我将非常感激.

smalltalk visualworks observer-pattern

3
推荐指数
2
解决办法
1154
查看次数

带有接口的观察者模式中的delphi AV

我想用Delphi实现观察者模式.这是一个接口ISubject和一个TWeatherData实现观察者的类.

ISubject = interface
    procedure notifyObservers;
    procedure removeObserver(o: IObserver);
    procedure registerObserver(o: IObserver);
  end;

TWeatherData = class(TInterfacedObject, ISubject)
  private
    observers: TList;
    FTemperature: Double;
    FHumidity: Double;
    FPressure: Double;
  public
    // ...
    procedure notifyObservers;
    procedure setMeasurements(ATemperature, AHumidity, APressure: Double);
  end;
Run Code Online (Sandbox Code Playgroud)

我得到一个访问冲突有关的读取地址的时候TWeatherData.notifyObservers执行

procedure TWeatherData.notifyObservers;
var
  observer: ^IObserver;
begin
  for observer in observers do
    observer.Update(FTemperature, FHumidity, FPressure); //oops -> there raised AV.
end;


procedure TWeatherData.setMeasurements(ATemperature, AHumidity,
  APressure: Double);
begin
  measurementsChanged; // and this one calls …
Run Code Online (Sandbox Code Playgroud)

delphi access-violation delphi-xe observer-pattern

3
推荐指数
1
解决办法
249
查看次数

利用JavaFX GUI设计中的观察者模式

如前所述这里在Swing的背景下,GUI的设计使得频繁使用的观察者模式.经常使用中规定的方案EventListenerList,是否有一个Java FX示例,例如Converter,关注模式本身?

swing javafx observable observer-pattern

3
推荐指数
1
解决办法
1944
查看次数

通用观察者模式

我正在使用代码,它有很多观察者模式实现.所有这些都以这样的方式组织:

一些接口由观察者实现:

class ObserverInterface {
  virtual void FooOccurs() = 0;
};
Run Code Online (Sandbox Code Playgroud)

一些实现注册,取消注册和通知的类:

class ObservableImpl {
  public:
    Register(ObserverInterface *observer);
    Unregister(ObserverInterface *observer);

  private:
    void SomeMethod() {
      // foo things
      for(auto &observer: observers) {
        observer.FooOccurs();
      }
    }
};
Run Code Online (Sandbox Code Playgroud)

每次有注册和取消注册的复制粘贴以及ObserverInterface的每个方法的通知实现.每当程序员必须记住调用Unregister()时,如果它的观察者将被破坏.

我希望将观察者模式包含在两个类模板中.到目前为止,我有类似的东西:http: //rextester.com/UZGG86035

但我不确定我是不是要重新发明轮子.是否有更容易,众所周知的方法来做到这一点?

c++ observer-pattern c++11

3
推荐指数
1
解决办法
666
查看次数