与阶级斗争,扩展和实施

时间:2012-05-23 08:49:19

标签: java android oop

我真的在努力学习课程,扩展和实施。

在android上我想创建一个首选项屏幕并检查用户输入。

因此我可以使用名为preferences.class的文件,并使用以下类执行我需要的所有内容:

        public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

        @Override
protected void onCreate(Bundle savedInstanceState) {
}

      @Override
      public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
    }
}

但是,将它分成不同的课程是不是更好?如果是的话怎么样?

1 个答案:

答案 0 :(得分:2)

您可以拥有PreferenceChangeListener来实施OnSharedPreferenceChangeListener,而您的偏好课程将有PrefernceChangeListener

public class Preference extends PreferenceActivity {

   private PrefernceChangeListener prefernceChangeListener;

   public void addPreferenceChangeListener(PrefernceChangeListener prefernceChangeListener){
     this.prefernceChangeListener = prefernceChangeListener;
   }

   public PrefernceChangeListener getPrefernceChangeListener(){
     return this.prefernceChangeListener;
   }    
}

一般情况下,如果您的班级有可以外部化的属性,您应该尝试使用 HAS A 关系,当您的班级提供时,您将使用 IS A 关系继承值之上的功能。

大多数情况 IS A 可以避免,除非您的类没有继承优惠的含义 HAS A 而不是 IS A 关系

Prefer composition over inheritance