【问题标题】:SOLID - The Interface Segregation PrincipleSOLID - 接口隔离原则
【发布时间】:2019-06-25 10:51:44
【问题描述】:

我想知道如何从 SOLID 为 TextWatcher 实现接口隔离原则。

更具体:如何删除不需要的功能:

beforeTextChanged(), afterTextChanged()

我只需要:

onTextChanged()

    passwordinput.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            presenter.validateCredentials(emailinput.getText().toString(), passwordinput.getText().toString());
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

【问题讨论】:

    标签: android interface


    【解决方案1】:

    创建一个继承自 MyTextWatcher 的类 NewClass 和

    passwordinput.addTextChangedListener(new New Class() {
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            presenter.validateCredentials(emailinput.getText().toString(), passwordinput.getText().toString());
        }
    
        });
    

    【讨论】:

      【解决方案2】:

      您可以通过实现 TextWatcher 创建自己的 TextWatcher 类,并将默认实现留空。然后在您的匿名实现中仅覆盖 onTextChanged()。

      class MyTextWatcher implements TextWatcher {
      @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
          }
      
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
      
          }
      
          @Override
          public void afterTextChanged(Editable s) {
      
          }
      }
      

      用法:

      passwordinput.addTextChangedListener(new MyTextWatcher() {
      
              @Override
              public void onTextChanged(CharSequence s, int start, int before, int count) {
                  presenter.validateCredentials(emailinput.getText().toString(), passwordinput.getText().toString());
              }
      
          });
      

      【讨论】:

      • MyTextWatcher 类告诉我“扩展 TextWatcher”:这里不需要接口!您需要将“扩展”更改为“实现”
      • 看看这里:proandroiddev.com/…。尝试过,但得到: setCallback(new MultiTextWatcher.TextWatcherWithInstance() --> TextWatcherWithInstance() not found
      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多