我有一个对象A,其中包含对象B作为其属性之一,而对象C还具有对象C作为其属性之一。我还具有所有这三个对象共有的一些属性。
我应该在哪里放置这些公共属性,以便不创建多个副本,并假定如果将对象C传递给函数,则仅显示对象C的属性。如果我将属性放在C类中,然后才能获得通用属性,那么我的代码将必须依赖于对象C的getter方法。如果将它们放在类A中,则对象C不需要的某些属性将对它可见。
答案 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;
[....]
}