封装经常更改的代码是一种常见的做法。实际上,它通常以使用对象的形式将变化的逻辑委托给。示例如下:
public class SampleClass {
Object obj = new ObjectWithVaryingMethod();
public SampleClass(Object obj){
this.obj=obj;
}
public String getString(){
return obj.toString();
}
public static void main(String args[]){
SampleClass sampleClass=new SampleClass(new ObjectWithVaryingMethod());
System.out.println(sampleClass.getString());
}
}
class ObjectWithVaryingMethod{
@Override
public String toString(){
return "Hi";
}
}
你能建议我在对不变的东西进行“封装”时可能遇到的问题吗?当主类本身经常需要更改或改进时,我发现这是一种很好的编码行为。示例如下。在第二种情况下,检索“Hi”是不变的部分,被“封装”在另一个类中。
public class SampleVaryingClass {
public static void main(String args[]) {
//here I may opt to print getHi's value on sysout or on a dialog
System.out.println(ObjectWithNonVaryingMethod.getHi());
}
}
在一个完全不同的班级...
public class ObjectWithNonVaryingMethod {
private static final String hi = "Hi";
//"Hi" should always be returned
public static String getHi() {
return hi;
}
}
你能给出一些赞成和反对这样做吗?