Иерархия носителей для нанимателей классов - PullRequest
0 голосов
/ 12 марта 2020

Учитывая, что у меня есть наемный архив классов (например, android классы виджетов), например: enter image description here

Мне нужно создать наемный архив владельцев для этой иерархии классов, так что каждый держатель может создать экземпляр своего класса и каким-то образом применить свойства к этому экземпляру, а также к экземплярам дочерних владельцев.

Моя текущая структура допускает только два уровня иерархии:

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
}
...