我有一个方法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) 我有以下课程:
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_update在do_something_cool回调之前(或可能同时)调用了清扫器中的,这会导致问题。
有谁知道如何after_update在模型回调后强制清扫器中的 s 触发?有没有更好的方法来实现这一目标?
更新/修复:事实证明,与下面的答案不同,观察者回调实际上以正确的顺序触发(在模型回调之后)。当我发现这一点时,我意识到一定是其他地方出了问题。
该do_something_cool方法销毁所有守夜人的插槽,并用正确数量的正确时间替换它们。观察者依靠插槽的数量来确定守夜应该持续多长时间。所以,潜在的问题是所有守夜人的插槽都被销毁了,并且数据被缓存了,所以当我vigil.slots从观察者那里调用时,它正在使用缓存(销毁的插槽)数据。解决方案:只需在结束时调用 vigil.slots(true)do_something_cool即可重新加载/重新缓存新创建的插槽!
我们如何处理一个元素是指向对象的向量?我的具体问题是下面提供的代码末尾的注释.谢谢.
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) Hy.我有一个客户端服务器应用程序.服务器侦听某个端口,并为每个客户端生成一个管理它的线程.这是基于套接字并且类似于此但客户端在Swing接口启动时进行连接,它调用方法有时会将inf发送到服务器并在关闭时关闭流和套接字.服务器线程保持唤醒状态,直到客户端套接字离开,并侦听请求.
我想要做的是.当一个客户端从界面做某事(按下一个按钮),通知所有其他客户端,我被卡住了.我是这样做的.我必须通过使用观察者模式来做到这一点,并且我不知道在这种情况下使用它.如何通知所有踏板他们将如何通知其他客户?
任何消化egen虽然与观察者模式无关,但是很受欢迎.Thanx
让我说我有classA一类音频,多次采样音频输入.每次class A获得一个新数据(可以在第二次发生多次),他需要通知另一个类,即classB.
现在,我可以只让实例class B 在classA和B键时,有一个新的数据到达,但这不是一个模块化的软件.
我想classA是"盲"到外面,只是给他添加到每个项目,并有另一个classB,将register他一些怎么样,所以当有新的东西,B会知道这件事,(没有呼叫乙!)
它在客观c中的表现如何?
非常感谢 .
在查找Observer模式的示例时,我遇到了以下代码.第四个参数是一个String,但我想知道那里发生了什么:它是否将实例字段lastName设置为新lastName值然后返回lastName?
这种形式的缩短是常见做法吗?
public void setLastName(String lastName) {
notifyListeners(this, "lastName", lastName, this.lastName = lastName);
}
Run Code Online (Sandbox Code Playgroud) 有没有一个例子向我展示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并随着时间的推移而增长.真?是.
我有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
题
我无法理解“可重用面向对象软件的元素”中观察者模式的以下 UML 图。谁能解释我为什么我的 Java 实现是错误的,我必须改变什么才能正确实现它?
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) 我开发了一个具有最强大功能的包Magento,事件和观察者.但我对它们知之甚少.我用谷歌搜索并试图找到任何教程,但没有得到.
任何人都有任何教程或任何有关他们的文件,请让我知道.
observer-pattern ×10
java ×5
c# ×1
c++ ×1
callback ×1
concurrency ×1
cpu-usage ×1
decoupling ×1
events ×1
interface ×1
listener ×1
magento ×1
memory-leaks ×1
objective-c ×1
performance ×1
sockets ×1
vector ×1