标签: observer-pattern

使用 Java 和观察者模式使用 Jersey 的 RESTful Web 服务

我正在尝试为学校项目实现一个 n 层架构应用程序。客户端和服务器之间的通信是通过 RESTful Web 服务完成的。我使用Jersey在Java中实现这一点。我唯一的问题是,如何在服务器上注册客户端以接收更改通知(就像通常使用观察者模式或监听/发布模式所做的那样)。我是否还需要在客户端实现一个服务,然后注册服务器要调用的 URL,然后在发生更改时调用这些 URL?

感谢您的帮助!

java rest web-services jersey observer-pattern

2
推荐指数
1
解决办法
1943
查看次数

在 ruby​​ 方法上定义自定义回调

我有许多服务类,其call方法在参数上有变化。

notify我想在每个方法的末尾调用一个函数call。我不想修改这些服务类,但我愿意修改基类。

我正在玩,ActiveSupport::Callbacks但它不能达到不修改服务类的目的。

require 'active_support'
class Base
  include ActiveSupport::Callbacks
  define_callbacks :notifier

  set_callback :notifier, :after do |object|
    notify()
  end

  def notify
    puts "notified successfully"
  end
end

class NewPost < Base
  def call
    puts "Creating new post on WordPress"
    # run_callbacks :notifier do
    #   puts "notifying....."
    # end
  end
end

class EditPost < Base
  def call
    puts "Editing the post on WordPress"
    # run_callbacks :notifier do
    #   puts "notified successfully"
    # end
  end
end

person …
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming callback observer-pattern

2
推荐指数
1
解决办法
4418
查看次数

将主体映射到观察者 - 观察者模式 GoF 书籍

在GoF设计模式一书中,谈到观察者模式的实现部分时,有这样的规定:

将主题映射到其观察者 主题跟踪它应通知的观察者的最简单方法是在主题中显式存储对它们的引用。然而,当主体较多而观察者较少时,这种存储可能过于昂贵。一种解决方案是通过使用关联查找(例如哈希表)来以空间换取时间来维护主体到观察者的映射。因此,没有观察者的主题不会产生存储开销。另一方面,这种方法增加了接触观察者的成本。

我不明白使用哈希表如何提高存储容量。在 Java 中,对于每个主题,我们都可以有一个观察者列表List<Observer>。如果没有观察者附加到该主题,则列表引用将为空。如果我们使用哈希表,Map<Subject, List<Observer>我们仍然有列表,但我们也有对主题的引用,所以这种方式的内存效率有点低。不知道是否相关,Gof书中实现的语言是Smalltalk和C++。

design-patterns observers observer-pattern

2
推荐指数
1
解决办法
358
查看次数

PrototypeJS观察窗户尺寸变化?

我正在尝试创建自己的"模态"窗口,因为PrototypeJS目前不存在这些窗口,这符合我的需求.

问题是观察document.documentElement以更改视口(或document.body,取决于Quirks/Standard模式)的高度和宽度.

javascript dom prototypejs observer-pattern

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

我在哪里可以找到Observer设计模式的好材料?

在哪里可以找到研究观察者模式的好材料?我需要一些代码示例和模型化情况的图片

java design-patterns observer-pattern

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

我们应该在取消注册时删除观察者吗?

Observer *o = New Observer();
Subject *s = new Subject() ;
s->register(o);

//Is it a good practice to delete the observer in the unregister function?
//I feel it is not. As the Observer object might still be in use,  for example , 
//it might be registered to another Subject. 
s->unregister(o);  

//So it is safe to rely on the client code to delete the object or rely on the smart pointer things
delete o;
Run Code Online (Sandbox Code Playgroud)

我想确认关于谁应该删除观察者对象,我的上述理解是否正确.

c++ observer-pattern

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

观察者对每个类的方法

我想在java中保留每个方法的观察者,即如果调用任何方法,我应该得到通知.或者如果任何成员变量被更新,我应该得到通知.有没有任何java框架可以做到这一点?

java observer-pattern

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

具有MVC模式的观察者/可观察对象

我有这种情况:

一个可观察的对象,另一个是观察者的对象.

观察者有一个update(Observable obs,Object obj)接收通过notifyObservers对象接收的方法.当观察者收到通知时,update方法打印更改的对象.我想在实现MVC模式的gui中打印出结果.我遵循这个指南MVC模式.我的想法是成为Controller观察者.类似的东西:

public class Controller extends AbstractController implements Observer 
{
    public static final String TOTAL_HIT_COUNT_PROPERTY = "Total Hit";

    public void changeTotalHitCount(long new_total_hit_count)
    {
        setModelProperty(TOTAL_HIT_COUNT_PROPERTY, new_total_hit_count);
    }

    @Override
    public void update(Observable o, Object arg) 
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否是正确的实施!

java model-view-controller swing observer-pattern

1
推荐指数
2
解决办法
9042
查看次数

使用OO Observer模式而不更新发生更改的对象

我正在构建一个包含GUI和模型的应用程序.我正在使用Observer模式(使用java的内置接口)在模型中的字段发生更改时更新GUI.

这通常工作正常,但我有一种情况,其中模型中的特定String变量(特别是文件的url)可以通过两个单独的JTextFields(swing)更改,其内容实际上反映了模型变量的值有问题.

我遇到的问题来自于这些JTextField之一的更改需要更新模型的状态以及其他JTextField的内容.我的模型确保仅在模型状态发生变化的情况下才将通知发送给观察者.但是,修改JTextFields的过程涉及消隐它的文本内容然后重新设置它.

没有太多细节,结果就是更新/通知过程陷入了infinte循环.我暂时通过抛开这个特定问题的观察者模式来解决这个问题,但我想知道是否有人能够建议一种巧妙的方法来确保特定组件不会被源自同一组件的更改"更新".

任何帮助赞赏.

java oop swing jtextfield observer-pattern

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

没有导出成员'toPromise'rxjs- 5.5.2

使用toPromise抛出错误

老方法:

import 'rxjs/add/operator/toPromise';
Run Code Online (Sandbox Code Playgroud)

最新方式:

import { toPromise } from 'rxjs/operators';
Run Code Online (Sandbox Code Playgroud)

最新方式显示以下错误:

[ts]模块'"d:/.../ node_modules/rxjs/operators/index"'没有导出成员'toPromise'.

版本:

 "typescript": "2.4.2"
 "rxjs": "5.5.2",
Run Code Online (Sandbox Code Playgroud)

observer-pattern rxjs typescript ionic3 angular

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