标签: observer-pattern

是否有Rails方法来检查观察者中哪些属性已更新?

我有一个ActivityObserver,正在观察tasks,并有一个after_update回调.

我想测试是否已修改特定属性update.

是否有Rails方法来比较主题的属性与更新前的内容,或检查它们是否已更改?

attributes ruby-on-rails observer-pattern

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

在java中避免使用instanceof运算符时观察多个observable?

如果我有一个对象,我希望能够观察其他几个可观察对象,而不是所有相同的类型.例如,我希望A能够观察B和C.B和C完全不相关,除了它们都实现了Observable.

显而易见的解决方案是在更新方法中使用"if instanceof",但很快就会变得混乱,因此我想知道是否还有其他方法?

java observer-pattern

7
推荐指数
2
解决办法
9329
查看次数

观察者不保存订单

我已经建立了一个监听sales_convert_quote_to_order事件的观察者.事件被触发,我只想为订单的属性添加值.该属性已设置 - 在日志中打印 - 但magento不保存订单.我做错了什么?

Observer.php

public function addLangToOrder($observer){
        Mage::log('catching convert_quote_to_order_after');
        $order = $observer->getEvent()->getOrder();
        $order->setCustomerLanguage(Mage::app()->getStore()->getCode());
        $order->save();
        Mage::log($order->getCustomerLanguage());
    }
Run Code Online (Sandbox Code Playgroud)

config.xml中

<events>
    <sales_convert_quote_to_order>
        <observers>
            <accustomer>
                <type>singleton</type>
                <class>Ac_Customer_Model_Observer</class>
                <method>addLangToOrder</method>
            </accustomer>
        </observers>
    </sales_convert_quote_to_order>
</events>
Run Code Online (Sandbox Code Playgroud)

我已customer_language通过安装脚本添加了该属性

$customer_lang = 'customer_language';
$installer->addAttribute('order', $customer_lang, array('type'=>'varchar'));
Run Code Online (Sandbox Code Playgroud)

customer_language列存在于sales_flat_order表中.但它没有得到保存.

我正在使用Magento 1.4.1.1

php magento observer-pattern

7
推荐指数
2
解决办法
2436
查看次数

在PHP库中集成事件调度程序的最佳方法是什么?

我需要在我自己的代码库(自定义PHP库)中集成一个事件调度程序,所以我看看Symfony2Zend Framework 2正在做什么.

显然,没有用于调度事件的共享接口,因为两个框架都有不同的需求并决定实现自己的代码......所以我有点迷失:我不想重新发明我的个人轮子.

用于实现观察者模式的SPL接口可能有点幼稚,所以我在这里问你:你会做什么?

编辑

由于目前尚不清楚......我想重新使用现有的ED,让开发人员将其注入我的库中.

假设您使用调度程序开发了一个lib,并且您知道您的lib将成为Symfony Bundle的一部分并在ZF项目中重复使用:您肯定希望重新使用Symfony和ZF调度程序,而不是您自己的.

因此,我一直在寻找在主流库中实现的现有调度程序的共享接口,但听起来似乎没有解决方案.

php zend-framework event-dispatching symfony observer-pattern

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

content:// sms/sent/not working

这是SMS观察者代码.我需要检查只发送短信.当我使用时,content://sms/我得到了结果.但是当我使用时为什么不能得到结果content://sms/sent/呢?我正在使用Android 2.1.

import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

public class smsSentService extends Service 
{
    ContentResolver contentResolver;
    Uri uri=Uri.parse("content://sms/sent");
    Handler handler;

    @Override
    public IBinder onBind(Intent arg0) 
    {
        return null;
    }

    @Override
    public void onCreate() 
    {
        contentResolver=getContentResolver();
        contentResolver.registerContentObserver(uri, true, new contentObserver(handler));
        super.onCreate();
    }

    @Override
    public void onStart(Intent intent, int startId) 
    {
        super.onStart(intent, startId);
    }

    @Override
    public void onDestroy() 
    {
        super.onDestroy();
    }

    public class contentObserver extends ContentObserver …
Run Code Online (Sandbox Code Playgroud)

sms android observer-pattern

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

是否可以将观察者添加到tableView.contentOffset?

我需要跟踪tableView.contentOffset.y是否可以将观察者添加到tableView.contentOffset?

我认为这是不可能的,因为contentOffset不会继承NSObject类.

还有其他解决办法吗?

uitableview ios observer-pattern

7
推荐指数
3
解决办法
8625
查看次数

观察者模式与中介模式

我做了一些谷歌搜索,是的,我知道有关这两者之间的差异的问题之前已经在stackoverflow和整个网络上被问过.但我主要找到措辞有问题的答案,这可能令人困惑.

我的问题是,如果有人在这里可以为我提供两个中介和观察者模式的视觉示例,可以清楚地展示两者之间的差异.在Javascript中.谢谢!

javascript mediator observer-pattern

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

Java中的可观察模式实现

我目前正在使用Java的Observer/Observable Pattern,我想知道:为什么在当前的实现中需要setChanged()方法?我知道它就在这里,所以我们只需要在治疗结束时调用notifyObservers()一次.

这样,如果我们想要我们可以使用clearChanged()回滚任何更改.但是,我们仍然可以在我们自己的实现中进行所有检查,并且只在我们绝对想要更新Observers 时调用notifyObservers().

我可能错过了一些东西,但我不明白他们为什么不这样简化它.有任何想法吗?

java design-patterns observer-pattern

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

如何实现Observer以从侦听器获取数据?

我正在使用MaterialDrawer库为我的应用程序创建一个简单的抽屉,库中的一些类实例需要在调用时传递给它们的字符串.一个例子是这个IProfile类:

IProfile profile = new ProfileDrawerItem().withName("John Doe");

其中withName()方法接受的字符串.

我已经创建了一个类MyObservable.java(扩展Observable)类,我打算用它来获取要在我MainActivity实现MaterialDrawer库的数据.在这个类中,我有一个方法implementData(),它可以从我的firebase数据库中获取我需要的内容.

这就是它的样子:

    public class MyObservable extends Observable {

    // Attach our firebase reference...
    Firebase userRef = new Firebase("https://myApp.firebaseio.com/users");
    AuthData authData;

    public String username = "";
    public String email = "";


    public void changeUsername(String username) {
        this.username = username;

        setChanged();
        notifyObservers(username);
    }


    public void implementData(){
        // Get the authentication data of our user from the reference.
        authData = userRef.getAuth();

        // This …
Run Code Online (Sandbox Code Playgroud)

java android observable observer-pattern firebase

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

如何使用java.beans包替换(现已弃用)Observable和Observer?

随着Java 9的到来,Observable类和Observer接口现已弃用.

Observablejavadoc的状态:

[Observable]和Observer接口已被弃用.Observer和Observable支持的事件模型非常有限,Observable提供的通知顺序未指定,状态更改不与通知一一对应.对于更丰富的事件模型,请考虑使用java.beans包.

它建议使用该java.beans包,但是如何使用它来创建一个模拟Observer模式的事件处理程序呢?

java javabeans observable observer-pattern java-9

7
推荐指数
0
解决办法
672
查看次数