繁体   English   中英

为什么在bean中创建受保护的属性被视为不好的做法?

[英]Why creating protected properties in beans is counted a bad practice?

我的意思是:

public class SomeBackingBean {

   protected String someString;

   public void setSomeString (String str) { 
      this.someString = str; 
   }

   public String getSomeString {
      return someString;
   }
}

这只是一般性回答的一般情况。

现在第二个例子:

public abstract class AbstractBean<T extends EntityInterface> {

   protected T entity;

   public void setEntity (T t) {
      this.entity = t;
   }

   public void getEntity () {
      return entity;
   }

   protected ReturnType calculateSomethingCommon () {
      //use entity (knowing that it implements EntityInterface) 
      //to implement some common for all subclasses logic
   }
}

public class ConcreteBean extends AbstractBean<ConcreteEntity> {
   ...
   //and here we can write only specific for this bean methods
   ...
}

第二个例子也是不良做法的例子吗?

通常,受保护的变量违反了面向对象的原则。 您正在给其他对象直接访问成员变量。 这样,您将形成更紧密的耦合,并且由于其他对象正在直接使用它,因此很难更改该变量。 这也意味着您无法执行诸如设置时进行验证,在getter / setter周围添加日志记录等操作。

例如,如果您有一个PropertyChangeListener注册到Bean的属性,则如果子类直接更改了受保护的属性,则可能不会通知任何已注册的侦听器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM