将通用属性放在适当的类中

时间:2018-07-06 06:15:57

标签: java composition

我有一个对象A,其中包含对象B作为其属性之一,而对象C还具有对象C作为其属性之一。我还具有所有这三个对象共有的一些属性。

我应该在哪里放置这些公共属性,以便不创建多个副本,并假定如果将对象C传递给函数,则仅显示对象C的属性。如果我将属性放在C类中,然后才能获得通用属性,那么我的代码将必须依赖于对象C的getter方法。如果将它们放在类A中,则对象C不需要的某些属性将对它可见。

1 个答案:

答案 0 :(得分:0)

如果A,B,C具有共同的属性,则可以自然地与这些属性的吸气剂共享一个接口。有了这样的界面后,请说

interface CommonInterface {
 Object getMyProperty()

}
 class B extends CommonInterface {           
    [....]
 }
 class A extends CommonInterface {
    private CommonInterface B myBInstance;  
       [....]
 }   

此时,您可以使用ChainOfResposibility模式:将抽象类实现为

abstract class CommonProperties implements CommonInterface {
  protected CommonProperties successor;

public void setSuccessor(PurchasePower successor) {
  this.successor = successor;
}

public Object processRequest(YourRequestClass request){
  // Obviosuly here you can put the condition you need not necessarily "!= null"
  if (request.getMyProperty() != null) {
     return getMyProperty();
  // else the request goes to the linked class
  } else if (successor != null) {
     successor.processRequest(request);
}

现在在哪里

class B extends CommonProperties {
    [....] 
} 
class A extends CommonProperties {    
    private CommonProperties B successors;  
    [....] 
}