java - 为应用程序实现一个通用的观察者模式/监听器

标签 java android design-patterns

在我的 Android 应用程序中,在生命周期开始并通过初始状态后需要完成大量更新。 现在我正在努力添加一个选项以允许用户禁用接收推送通知,我必须创建一个自定义“监听器”以便它可以到达 onCreate 回调中的一个方法,我注意到它不是我第一次这样做。 所以我想知道,有没有办法制作一些“抽象”接口(interface),而不是为每个类(有几十个......)实现一个新的监听器。

只是为了让自己更清楚,这是我的意思的伪代码:

interface X:
{
   void onDoneFragment1();
   void onDoneFragment2();
   void onDoneFragment3();
...
}

然后

fragment 1:
..
x.setOnListenFragment1( new OnDoneFragment1(){
@Override
public onDoneFragment1(){
......
..

fragment 2 和其他 fragment 相同..

 fragment 2:
    ..
    x.setOnListenFragment2( new OnDoneFragment2(){
    @Override
    public onDoneFragment2(){
    ......
    ..

最佳答案

是的,您有两个选择:

1) 只需创建一个包含所有空白实现的抽象类。这样的方法

2) 如果你使用 RetroLambda将 Java8 语法支持添加到 Java7,并通过与 Android 的关系....您可以制作 an Interface with 'default' methods .

抽象类:

abstract class X:
{
   // having this makes sure the person only uses a method they have 'overridden'
   private Exception makeException(){
        return new Exception("Called Method from abstract class that wasn't overridden");
   }
   void onDoneFragment1(){throw makeException();}
   void onDoneFragment2(){throw makeException();}
   void onDoneFragment3(){throw makeException();}
...
}

与“默认方法”的接口(interface)

interface X:
{
   // having this makes sure the person only uses a method they have 'overridden'
   private Exception makeException(){
        return new Exception("Called Method from abstract class that wasn't overridden");
   }
   default void onDoneFragment1(){throw makeException();}
   default void onDoneFragment2(){throw makeException();}
   default void onDoneFragment3(){throw makeException();}
...
}

关于java - 为应用程序实现一个通用的观察者模式/监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33797515/

相关文章:

java - Jackrabbit,保存很多文档太慢了

java - 减少对象列表中的整数属性

android - Android 项目的 Eclipse Gradle 导出不执行任何操作

java - Android Studio音乐播放器列表查看播放列表

android - LibGDX - Actor 是否在半径范围内被触摸

java - 初始化可能失败的惰性单例的哪种实现?

java - 重新缩放 JFrame 内容

java - 如何在JAVA中使用rtrim PHP函数

c# - IHttpModule 和控制台应用程序的流畅 NHibernate 模式

java - 重构严格的代码以消除检查instanceOf的if-else语句