Учитывая, что у меня есть наемный архив классов (например, android классы виджетов), например:
Мне нужно создать наемный архив владельцев для этой иерархии классов, так что каждый держатель может создать экземпляр своего класса и каким-то образом применить свойства к этому экземпляру, а также к экземплярам дочерних владельцев.
Моя текущая структура допускает только два уровня иерархии:
class MyViewBase {
protected void applyProperties(View view)
// Apply View's params
}
}
class MyTextView extends MyViewBase {
private TextView textView;
public MyTextView(Context context){
textView = new TextView();
// Apply TextView specific params
applyParams(textView);
}
}
// I cannot extend MyTextView since I
// would get both a Button and a TextView instantinated
class MyButton extends MyViewBase {
private TextView textView;
public MyTextView(Context context){
textView = new TextView();
// Apply TextView and Button specific params
applyParams(textView);
}
}
Использование методов stati c, подобных приведенному ниже, не подходит, поскольку в некоторых случаях мне нужен контекст
protected static void applyTextViewProperties(TextView view){
// Some code here
}