标签: observer-pattern

方法达到峰值我的处理器

可能重复:
如何开始优化我的Java代码? - CPU为100%

我有一个方法isReset(),它像疯了一样执行我定义为

   public boolean isReset() { return reset; 
   }
Run Code Online (Sandbox Code Playgroud)

在另一堂课.下面的类是唯一使用此代码的类.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.KeyStroke;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;


// TimerQueue

public class SkaTest {
   public static final int WIDTH = 500;
   public static final int HEIGHT = 500;
   public static final int CANVAS_X = 100;
   public static final int …
Run Code Online (Sandbox Code Playgroud)

java performance listener cpu-usage observer-pattern

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

Rails 缓存清扫器和模型回调触发

我有以下课程:

class Vigil < ActiveRecord::Base
  after_update :do_something_cool

  private
    def do_something_cool
      # Sweet code here
    end
end

class NewsFeedObserver < ActionController::Caching::Sweeper
  observe Vigil

  def after_update
    # Create a news feed entry
  end
end
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行;但是,after_updatein the clearer 需要do_something_cool模型中的方法已经完成才能正常运行。问题是after_updatedo_something_cool回调之前(或可能同时)调用了清扫器中的,这会导致问题。

有谁知道如何after_update在模型回调后强制清扫器中的 s 触发?有没有更好的方法来实现这一目标?

更新/修复:事实证明,与下面的答案不同,观察者回调实际上以正确的顺序触发(在模型回调之后)。当我发现这一点时,我意识到一定是其他地方出了问题。

do_something_cool方法销毁所有守夜人的插槽,并用正确数量的正确时间替换它们。观察者依靠插槽的数量来确定守夜应该持续多长时间。所以,潜在的问题是所有守夜人的插槽都被销毁了,并且数据被缓存了,所以当我vigil.slots从观察者那里调用时,它正在使用缓存(销毁的插槽)数据。解决方案:只需在结束时调用 vigil.slots(true)do_something_cool即可重新加载/重新缓存新创建的插槽!

ruby-on-rails callback observer-pattern

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

指向对象的向量 - 如何避免内存泄漏?

我们如何处理一个元素是指向对象的向量?我的具体问题是下面提供的代码末尾的注释.谢谢.

class A
{
 public:
 virtual int play() = 0 ; 
};

class B : public A 
{
public:
 int play() {cout << "play in B " << endl;};

};

class C : public A 
{
public:
 int play() {cout << "play in C " << endl;};

};


int main()
{

    vector<A *> l;
    l.push_back(new B());
    l.push_back(new C());

    for(int i = 0 ; i < l.size();i++)
    {
            l[i]->play();
    }

    //Do i have to do this to avoid memory leak? It …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks vector observer-pattern

0
推荐指数
2
解决办法
1737
查看次数

线程和观察者模式.如何让线程通知所有其他线程并执行某个方法/事物?

Hy.我有一个客户端服务器应用程序.服务器侦听某个端口,并为每个客户端生成一个管理它的线程.这是基于套接字并且类似于但客户端在Swing接口启动时进行连接,它调用方法有时会将inf发送到服务器并在关闭时关闭流和套接字.服务器线程保持唤醒状态,直到客户端套接字离开,并侦听请求.

我想要做的是.当一个客户端从界面做某事(按下一个按钮),通知所有其他客户端,我被卡住了.我是这样做的.我必须通过使用观察者模式来做到这一点,并且我不知道在这种情况下使用它.如何通知所有踏板他们将如何通知其他客户?

任何消化egen虽然与观察者模式无关,但是很受欢迎.Thanx

java sockets multithreading client-server observer-pattern

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

在目标c中注册一个班级

让我说我有classA一类音频,多次采样音频输入.每次class A获得一个新数据(可以在第二次发生多次),他需要通知另一个类,即classB.

现在,我可以只让实例class BclassA和B键时,有一个新的数据到达,但这不是一个模块化的软件.

我想classA是"盲"到外面,只是给他添加到每个项目,并有另一个classB,将register他一些怎么样,所以当有新的东西,B会知道这件事,(没有呼叫乙!)

它在客观c中的表现如何?

非常感谢 .

objective-c decoupling observer-pattern

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

在方法参数内设置实例字段值

在查找Observer模式的示例时,我遇到了以下代码.第四个参数是一个String,但我想知道那里发生了什么:它是否将实例字段lastName设置为新lastName值然后返回lastName

这种形式的缩短是常见做法吗?

 public void setLastName(String lastName) {
  notifyListeners(this, "lastName", lastName, this.lastName = lastName);
}
Run Code Online (Sandbox Code Playgroud)

java observer-pattern

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

IEnumerable <T> .Count()实际上适用于IObservable <T>吗?

有没有一个例子向我展示Observable.Count<TSource> Method实际如何运作?我想出的例子似乎返回一个包含在observable中的计数而不是预期的计数.

例如,我希望1从这里返回:

System.Diagnostics.Debug.WriteLine((Observable.Return<string>("Hello world!")).Count());
Run Code Online (Sandbox Code Playgroud)

将来会1被退回(因为,毕竟它是一个异步序列)?或者我错过了一些基本的东西?在撰写本文时,我实际上假设只要结果被推出,.Count()它将返回结果T并随着时间的推移而增长.真?是.

c# system.reactive observer-pattern

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

Java:notifyObservers不兼容?

我有4个观察者正在监听可观察的数据.然而,我的一个观察者是较慢的,可以采取.我刚看到notifyObserver的代码为: -

  132       public void notifyObservers(Object arg) {
  133           /*
  134            * a temporary array buffer, used as a snapshot of the state of
  135            * current Observers.
  136            */
  137           Object[] arrLocal;
  138   
  139           synchronized (this) {
/**comment removed for clarity **/

  152               if (!changed)
  153                   return;
  154               arrLocal = obs.toArray();
  155               clearChanged();
  156           }
  157   
  158           for (int i = arrLocal.length-1; i>=0; i--)
  159               ((Observer)arrLocal[i]).update(this, arg);
  160       }
Run Code Online (Sandbox Code Playgroud)

从代码中可以清楚地看到观察者是一个接一个地被调用的.由于设计观察者在执行中是独立的.不应该同时调用它们arg作为最终的功能吗?

执行的时间本t1+t2+t3+t4应该是max(t1,t2,t3,t4).我可以使 …

java concurrency design-patterns java.util.concurrent observer-pattern

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

基于UML图的观察者模式实现

我无法理解“可重用面向对象软件的元素”中观察者模式的以下 UML 图。谁能解释我为什么我的 Java 实现是错误的,我必须改变什么才能正确实现它?

UML-图

UML-图

尝试(但错误)实施

public interface Subject {
    
    public static final List<Observer> observers = new ArrayList<Observer>();
    
    public void attach(Observer o);
    public void detach(Observer o);
    public void notifyObservers();
}

public interface Observer { 
    public void update();
}

public class ConcreteSubject implements Subject {
    
    private String subjectState;

    @Override
    public void attach(Observer o) {
        observers.add(o);   
    }

    @Override
    public void detach(Observer o) {
        observers.remove(o);
    }

    @Override
    public void notifyObservers() {
        for (Observer o : observers) {
            o.update();
        } …
Run Code Online (Sandbox Code Playgroud)

java design-patterns interface observer-pattern

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

什么是magento的事件和观察员

我开发了一个具有最强大功能的包Magento,事件和观察者.但我对它们知之甚少.我用谷歌搜索并试图找到任何教程,但没有得到.

任何人都有任何教程或任何有关他们的文件,请让我知道.

events magento observer-pattern

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