У меня быстрый вопрос ООП, и я хотел бы посмотреть, как другие подойдут к этой конкретной ситуации. Вот оно:
Класс A (базовый класс) -> Класс B (расширяет класс A)
Класс C (базовый класс) -> Класс D (расширяет класс C)
Все так просто, верно? Теперь класс A может получить экземпляр класса C через его конструктор. Аналогично, класс B может получить экземпляр класса C или класса D через свой конструктор. Вот небольшой фрагмент кода:
Class A
{
protected var _data:C;
public function A( data:C )
{
_data = data;
}
}
Class B extends A
{
public function B( data:D )
{
super( data );
}
}
Class C
{
public var someVar:String; // Using public for example so I don't need to write an mutator or accessor
public function C() { } // empty constructor for example
}
Class D extends C
{
public var someVar2:String; // Using public for example so I don't need to write an mutator or accessor
public function D() { super(); } // empty constructor for example
}
Итак, допустим, что я использую класс B. Поскольку _data была определена как защищенная переменная в классе A как тип C, мне нужно будет каждый раз вводить переменную _data для типа D в классе B каждый раз, когда я хочу ее использовать. , Я действительно хотел бы избежать этого, если это возможно. Я уверен, что есть образец для этого, но не знаю, что это. Сейчас я решаю проблему, выполнив следующие действия:
Class B extends A
{
private var _data2:D;
public function B( data:D )
{
super( data );
_data2 = data;
}
}
Теперь в классе B я могу использовать _data2 вместо типизации _data для ввода D каждый раз, когда я хочу его использовать. Я думаю, что может быть более чистое решение, которое использовали другие. Мысли?