基本上,我需要在特定条件下执行不同的操作。现有代码以这种方式编写
基本介面
// DoSomething.java
interface DoSomething {
   void letDoIt(String info);
}实施第一类工人
class DoItThisWay implements DoSomething {
  ...
}实施第二类工人
class DoItThatWay implements DoSomething {
   ...
}主班
   class Main {
     public doingIt(String info) {
        DoSomething worker;
        if (info == 'this') {
          worker = new DoItThisWay();
        } else {
          worker = new DoItThatWay();
        }
        worker.letDoIt(info)
     }该代码可以正常工作,并且易于理解。
现在,由于一项新要求,我需要传递一条仅对有意义的新信息DoItThisWay。
我的问题是:以下编码样式是否可以很好地满足此要求。
使用新的类变量和方法
// Use new class variable and method
class DoItThisWay implements DoSomething {
  private int quality;
  DoSomething() {
    quality = 0;
  }
  public void setQuality(int quality) {
    this.quality = quality;
  };
 public void letDoIt(String info) {
   if (quality > 50) { // make use of the new information
     ...
   } else {
     ...
   }
 } ;
}如果这样做,则需要对调用方进行相应的更改:
   class Main {
     public doingIt(String info) {
        DoSomething worker;
        if (info == 'this') {
          int quality = obtainQualityInfo();
          DoItThisWay tmp = new DoItThisWay();
          tmp.setQuality(quality)
          worker = tmp;
        } else {
          worker = new DoItThatWay();
        }
        worker.letDoIt(info)
     }这是一种好的编码风格吗?还是我可以抛弃它
   class Main {
     public doingIt(String info) {
        DoSomething worker;
        if (info == 'this') {
          int quality = obtainQualityInfo();
          worker = new DoItThisWay();
          ((DoItThisWay) worker).setQuality(quality)
        } else {
          worker = new DoItThatWay();
        }
        worker.letDoIt(info)
     }DoItThisWay和DoItThatWay的构造必须在的构造函数中完成一次Main。Main是一个长期生活的阶层,doingIt一遍又一遍地被多次呼唤。
                setQuality在DoItThisWay对象的生存期内将多次调用该方法吗?
                
quality给构造函数DoItThisWay呢?