Общепринятой практикой является инкапсуляция кода, который часто изменяется. Фактически, это часто в форме использования объекта для делегирования различной логики. Образец будет следующим:Инкапсулировать то, что не меняется?
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";
}
}
Можете ли вы предложить какие проблемы я могу столкнуться, когда «инкапсуляция» делается на то, что не меняется? Я считаю, что это хорошее поведение при кодировании, когда основным классом является тот, который часто подвержен изменениям или улучшениям. Образец будет следующим. В этом втором случае получение «Привет», которое является частью, которая не меняется, была «инкапсулирована» в другой класс.
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;
}
}
Можете ли вы дать некоторые профи и против делать это?
Анти-шаблон? –
Можете ли вы предложить соответствующий шаблон дизайна? Примером, который я могу дать для этого, является использование объекта DatePicker. –
Я не понимаю вопроса. Можете привести несколько примеров здесь? – Fendy