Уважаемые знатоки, здравствуйте. Мне нужно выбрать вариант, но ум за разум уже зашел. Два варианта полностью одинаковы за исключением пару мелочей, какой выбрать не знаю. Помогите вынести решение.
Имеется основной класс Main, в котором я подключаю другие классы(пакеты);
(function(){
function __First(){
//Конструктор
console.log('First подключен');
}
First = __First;
})();
(function(){
function __Second(){
//Конструктор
console.log('Second подключен');
}
Second = __Second;
})();
(function(){
function __Main(){
this.setPacks();
}
__Main.prototype.setPacks = function(){
this.first = new First();
this.second = new Second();
};
Main = __Main;
})();
Класс First и Second должны напрямую(!) использовать Main. В дополнение класс Second должен (так же напрямую) использовать First. В контексте именно Firs и Second классов мне не нужно делать Main их прототипом, и мне не нужно «примешивать» отдельные его методы и свойства. Поэтому делам так:
ВАРИАНТ А
(function(){
function __First(main){
//Конструктор
console.log('First подлкючен');
//Cылка на основной класс
this.main = main;
this.main.useMethod('First');
}
__First.prototype.forSecond = function(){
console.log('Я First, меня использует Second');
};
First = __First;
})();
(function(){
function __Second(main,first){
//Конструктор
console.log('Second подлкючен');
/*Вариант А*/
this.main = main;
this.first = first;
this.main.useMethod('Second');
this.first.forSecond();
}
Second = __Second;
})();
(function(){
function __Main(){
this.setPacks();
}
__Main.prototype.useMethod = function(name){
console.log('Мы пришли по ваши души из ' + name);
};
__Main.prototype.setPacks = function(){
/*Вариант А*/
this.first = new First(this);
this.second = new Second(this,this.first);
};
Main = __Main;
})();
Или так (Исправляем только Main и Second) :
ВАРИАНТ Б
(function(){
function __Second(first){
//Конструктор
console.log('Second подлкючен');
/*Вариант Б*/
this.first = first;
//Подлкючаемся к основному классу через родителя
this.first.main.useMethod('Second');
this.first.forSecond();
}
Second = __Second;
})();
(function(){
function __Main(){
this.setPacks();
}
__Main.prototype.useMethod = function(name){
console.log('Мы пришли по ваши души из ' + name);
};
__Main.prototype.setPacks = function(){
/*Вариант Б*/
this.first = new First(this);
//Передаем только один класс
this.second = new Second(this.first);
};
Main = __Main;
})();
Внимание вопрос.
Какой бы вы, уважаемые знатоки, выбрали вариант :
- Вариант А с передачей основного и дополнительного(дополнительных) класса(классов)
- Или вариант Б с получением доступа к основному классу через наследуемый, дополнительный (такой же пакет) класс
Какой вариант выбрать? (другие варианты не предлагать, интересуют только эти две вариации)
Заранее спасибо.