标签: observer-pattern

我应该使用监听器还是观察者?

我的GUI中有一个下拉框,显示另一个类中ArrayList的内容.可以将新对象添加到GUI中其他位置的ArrayList,因此我需要知道它何时更新,因此我可以刷新下拉菜单.从我可以收集的内容来看,我的两个选项是扩展ArrayList类以允许我向其添加我自己的changeListener,或者使包含有问题的ArrayList的类扩展为observable.

哪个是更合适的解决方案?

java swing arraylist listener observer-pattern

16
推荐指数
2
解决办法
2万
查看次数

RxJava计时器可以永久重复,并且可以随时重新启动和停止

在android中我使用Timer来执行每5秒重复一次的任务,并以1秒的方式以这种方式启动:

    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            // Here is the repeated task
        }
    }, /*Start after*/1000, /*Repeats every*/5000);

    // here i stop the timer
    timer.cancel();
Run Code Online (Sandbox Code Playgroud)

这个计时器将重复直到我打电话 timer.cancel()

我正在学习RxAava并使用RxAndroid扩展

所以我在互联网上找到了这个代码,我尝试了它并且它没有重复:

Observable.timer(3000, TimeUnit.MILLISECONDS)
    .subscribeOn(Schedulers.newThread())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new Action1<Long>() {
        @Override
        public void call(Long aLong) {
             // here is the task that should repeat
        }
    });
Run Code Online (Sandbox Code Playgroud)

那么什么是RxJava中的Android定时器的替代品.

android observer-pattern rx-java rx-android

16
推荐指数
2
解决办法
2万
查看次数

在 Angular 9 中使用 Typescript 查找 ResizeObserver

我正在尝试在 Angular 应用程序中实现 ResizeObserver:

const obs = new ResizeObserver(e => {
      // ...
});
Run Code Online (Sandbox Code Playgroud)

...并且遇到了 TS 错误:

TS2304: Cannot find name 'ResizeObserver'.
Run Code Online (Sandbox Code Playgroud)

我试图用以下方法更新我的类型定义:

@types/resize-observer-browser
Run Code Online (Sandbox Code Playgroud)

......但是我的问题仍然存在。是否有建议的解决方案或常见的解决方法,或者使用像“resize-observer”这样的 NPM 包来继续前进会更好吗?

如果需要,很高兴包含更多信息。

太棒了!

javascript observer-pattern typescript angular

16
推荐指数
6
解决办法
2万
查看次数

在Magento有客户账户注册活动吗?

我希望能够运行一些功能module,我正在建立customer registers一个帐户,但我似乎找不到任何event被解雇的new customer registration.

有没有人知道event那个被派遣的人?

php events magento observer-pattern

15
推荐指数
6
解决办法
3万
查看次数

Go语言中的观察者模式

此问题非常常见:对象应在发生某些事件时通知其所有订户.在C++中我们可以使用boost::signals或其他东西.但是如何用Go语言做到这一点?很高兴看到一些工作代码示例,其中有几个对象订阅了发布者并处理了通知.

谢谢

go observer-pattern

15
推荐指数
1
解决办法
4831
查看次数

Scala Listener/Observer

通常,在Java中,当我有一个向其他对象提供某种通知的对象时,我将使用Listener/Observer模式.

是否有更像Scala的方式来做到这一点?我应该在Scala中使用这种模式,还是我应该利用的语言中还有其他东西?

scala listener observer-pattern

15
推荐指数
2
解决办法
9978
查看次数

Magento - customer_save_after总是被解雇两次

我正在使用customer_save_aftermagento中的事件,除了1个烦人的事情之外,所有事情都很好 - 它总是被解雇两次.

没有其他模块重写这个,我找不到其他原因发生这种情况.当我查看此时被解雇的所有事件时,这个事件肯定会被解雇两次.

有谁解释这个?

我正在编写一个与此相关的Web服务,并且它的复制效果非常低效.

php events magento observer-pattern

15
推荐指数
2
解决办法
8521
查看次数

在IObservable <T>接口中返回IDisposable的目的是什么?

我正在阅读Head First Design Patterns一书,并尽力将代码从Java转换为C#.在本书讨论了观察者模式后,它提到Java内置了类/接口,.NET4也是如此.所以我开始研究如何正确使用它,除了Subscribe()方法之外,我已经找到了大部分内容.

如果您在尝试订阅IObserver时查看MSDN文章,该方法将返回IDisposable.为什么这是必要的?为什么不实现一个基于方法参数取消下载IObserver的方法?我研究了使用IDisposable接口的原因.我也读过这篇文章,但不太了解差异/它试图告诉我的内容:

它返回对IDisposable接口的引用.这使观察者能够在提供者完成发送之前取消订阅(即停止接收通知),并调用订阅者的OnCompleted方法.

c# design-patterns idisposable system.reactive observer-pattern

15
推荐指数
1
解决办法
2356
查看次数

如何在Rust中实现观察者模式?

我有一个可观察的集合和一个观察者.我希望观察者成为一个特质实现trait Observer.当某些事件发生时,可观察对象应该能够通知每个观察者.这应该解释我的意图:

struct A {
    observables: Vec<Observable>,
}

impl A {
    fn new() -> A {
        A {
            observables: vec![],
        }
    }
}

trait Observer {
    fn event(&mut self, _: &String);
}

impl Observer for A {
    fn event(&mut self, ev: &String) {
        println!("Got event from observable: {}", ev);
    }
}

struct Observable {
    observers: Vec<dyn Observer>, // How to contain references to observers? (this line is invalid)
}

impl Observable {
    fn new() -> Observable {
        Observable …
Run Code Online (Sandbox Code Playgroud)

rust observer-pattern

15
推荐指数
3
解决办法
3435
查看次数

如何在javascript中实现观察者模式?

嗨,我想在JavaScript中实现观察者模式:

我的index.js:

$(document).ready(function () {
  var ironMan = new Movie();
  ironMan.setTitle('IronMan');
  ironMan.setRating('R');
  ironMan.setId(1);
  //  ironMan.setCast(['Robert Downey Jr.', 'Jeff Bridges', 'Gwyneth Paltrow']);

  var terminator = new Movie();
  terminator.setTitle('Terminator');
  terminator.setRating('P');
  terminator.setId(2);

  console.log(ironMan.toString());
  console.log(terminator.toString());

  ironMan.play();
  ironMan.stop();
  ironMan.download();
  ironMan.share('V. Rivas');

  console.log(ironMan.getCast()[0]);
});
Run Code Online (Sandbox Code Playgroud)

我的电影:

var title;
var rating;
var id;
var observers;


function Movie() {
  observers = new ObserverList();
}

//function Movie (title, rating, id){
//  this. title = title;
//  this.rating =  rating;
//  this.id =id;
//  observers = new ObserverList();
//} …
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns observer-pattern

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