标签: observer-pattern

在Rails中实现通知

在我的申请中,我想在评论或帖子中提及他/她时通知用户.
用户句柄@user_name类似于Facebook.
提及的数据库表如下所示:

Mention
  mentioned_by: user_id (foreign key)
  user_mentioned: user_id (foreign key)
  comment_id: (foreign key)
  post_id: (foreign key)
Run Code Online (Sandbox Code Playgroud)

我无法想出实现它的方法.Facebook/Twitter如何做到这一点?

我决定使用的是使用ActiveRecord callbacks/ Observer design pattern,每当新的评论/帖子保存到数据库时,我都可以浏览帖子/评论的内容,并留意任何提及,然后根据需要执行通知.

我觉得有一些缺失的东西,我没有把它弄好.
这是最好的方式吗?

twitter notifications facebook ruby-on-rails observer-pattern

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

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

是否有推荐的方法在MVP中使用GWT使用Observer模式?

我正在考虑使用GWT根据MVP模式实现用户界面,但对如何继续进行疑问.

这些是(我的一些)目标:

  • 主持人对UI技术一无所知(即不使用com.google.*)
  • 该视图对演示者一无所知(不确定我是否希望它与模型无关)
  • 模型对视图或演示者一无所知(......显然)

我会在视图和演示者之间放置一个接口,并使用Observer模式将两者分离:视图生成事件并通知演示者.

令我困惑的是GWT中不支持java.util.Observer和java.util.Observable.这表明我所做的并不是建议的方式,就GWT而言,这引出了我的问题:使用GWT实施MVP的推荐方法是什么,特别是考虑到上述目标?你会怎么做?

java gwt design-patterns observer-pattern

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

Rails审计系统包含ActiveResource和ActiveRecord

我有一个包含ActiveRecord和ActiveResource模型的庞大项目.我需要使用这些模型实现用户活动的记录,并记录模型属性的更改(保存对象状态或类似的东西).用户或cron rake任务可以进行更改.

我也必须有可能按日期搜索任何数据,任何字段..等等

例如,用最后一个活动生成可读消息也会很好

  • 用户Bob将密码更改为*,并在2011-08-12 08:12 发送电子邮件至**
  • 员工Jeff在2011-08-12 08:13添加了新合作伙伴:公司名称
  • Admin Jack删除了产品:产品名称于2011-09-12 11:11
  • 客户Sam订购了新服务:服务名称于2011-09-12 11:12

有人实施这样的记录吗?想法?建议?

我应该使用宝石还是我可以通过观察者不改变模型来做所有逻辑?


我喜欢gem https://github.com/airblade/paper_trail任何人都可以说我怎样才能让它与activeresource一起工作?

ruby logging auditing observer-pattern ruby-on-rails-3

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

iPhone:相机自动对焦观察器?

我想知道是否可以在iPhone应用程序中收到有关自动对焦的通知?

IE,是否存在自动对焦开始,结束,如果成功或失败时被通知的方式......?

如果是这样,这个通知名称是什么?

iphone notifications camera autofocus observer-pattern

17
推荐指数
2
解决办法
7573
查看次数

如何确定具有大量属性的对象(self)是否已更改?

问题的简短版本:
我有一个具有大量声明属性的类,我想跟踪它是否有任何更改,以便当我调用save它的方法时,它不会写不需要时到数据库.如何更新的isDirty特性,而无需编写自定义的制定者对于所有声明的属性

问题的较长版本:
假设我有一个这样的类:

@interface MyObject : NSObject
{
@property (nonatomic, retain) NSString *myString;
@property (nonatomic, assign) BOOL     myBool;
// ... LOTS more properties
@property (nonatomic, assign) BOOL     isDirty;
}

...

@implementation MyObject
{
@synthesize myString;
@synthesize myBool;
// ... LOTS more synthesizes :)
@synthesize isDirty;
}
Run Code Online (Sandbox Code Playgroud)

尝试1
我的第一个想法就是这样实现setValue:forKey::

- (void)setValue:(id)value forKey:(NSString *)key {
    if (![key isEqualToString:@"isDirty"]) {
        if ([self valueForKey:key] != value) {
            if (![[self valueForKey:key] isEqual:value]) {
                self.isDirty = YES; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios observer-pattern

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

如何在Ruby中做事件?

我来自C#背景,刚刚开始用Ruby编程.问题是,我需要知道如何在我的课程中引发事件,以便在需要发生事情时触发各种观察者.

问题是我在Ruby上的书甚至没有提到事件,更不用说提供例子了.有人能帮助我吗?

ruby events design-patterns observer-pattern

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

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

我的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万
查看次数