我有一个可以改变的现有框架,即2个特性。
ClassA=somepackage.AnImplementationOfInterfaceA
ClassB=somepackage.AnImplementationOfInterfaceB
电话public methodsA
on a new categoryA(
,public methodsB
on a new categoryB(
in that order
我愿制作一个<条码>的C,用以实施A、B和并提供条码<条形码>、<条码>、<条码>、<条码>至上>(<条码>>;<条码>;<条码>> 甲型六氯环己烷/甲型六氯环己烷>;<条形状> /条码>含有大量碎块和复合体,用于实施-条码
ClassA=somepackage.classD
ClassB=somepackage.classD
问题在于,执行D类的人可能会被诱惑撰写诸如:
class D extends class C
{
private int foo; //must be non-static due to multi-threaded new Class D() calls going on
int methodC1() {this.foo = read number from network}
methodC2(int x) {y = this.foo;} //methodC2 is always called after methodC1
//methodA, methodB implementation inherited from C
}
但是,由于该框架实际上将产生一个新的目标,即:<代码>D<>/代码>。 在援引<代码>methodA之前,>methodB
,从而不能依靠使用“这一”参考资料。
Defining methodC1
, methodC2
as static
要么是因为对<代码>methodC1的号召与在<代码>C上的执行有关,而不是与在<代码>上的首要要求有关。 D 。
实际需要的是:
class D extends class C
{
int methodC1() {return number from network;}
methodC2(int x) {y = x} //here y is using the return value of methodC1
//methodA, methodB implementation inherited from C
}
我也希望
理想的设计本来可以做到。
- the properties refer to one class only
methodC1
,methodC2
to be in that class
挑战摘要
- no
this
inmethodC1
,methodC2
- can t make
methodC1
,methodC2
static
- properies takes only a instantiable class
我如何设计这一框架? 难道这甚至可以降低一半? 您可更改<代码>methodC1的签名,methodC2
。