Как правильно спроектировать классы? Допустим, у нас есть класс Employe и Company. Я хочу реализовать связь между этими двумя классами. У класса Employe будет поле company, в котором будет храниться экземпляр класса Company. У класса Company будет поле employes, которое представляло бы собой массив экземпляров класса Employe.
На js получилось бы что-то вроде этого:function Employe(firstName, company) {
this.firtsName = name;
this.company = company;
}
function Company(name, employes) {
this.name = name;
this.employes = employes;
}
Верен ли такой подход к проектированию? Если да, то следующий вопрос: как лучше всего реализовать методы, которые бы контролировали состояния этих двух классов? Если, например, у экземпляра класса Employe измениться поле company, то у двух соответствующих экземпляров класса Company должны так же измениться поля. Как это лучше реализовать?

21 Авг 2019 в 07:05
203 +1
1
Ответы
1

Подход к проектированию классов Employe и Company вполне верен. Для контроля состояний объектов классов можно использовать геттеры и сеттеры. В данном случае, например, можно создать методы в классе Employe для изменения поля company:

function Employe(firstName, company) {
this.firstName = name;
this.company = company;
this.setCompany = function(newCompany) {
this.company = newCompany;
newCompany.addEmploye(this); // добавим этот экземпляр Employe в массив employes у новой компании
}
}
function Company(name, employes) {
this.name = name;
this.employes = employes || [];
this.addEmploye = function(employe){
this.employes.push(employe);
}
}

Таким образом, при изменении компании у экземпляра класса Employe, мы вызываем соответствующий метод в классе Company для добавления этого сотрудника. В этом примере используются простые методы, но для большей гибкости и управления состоянием, можно использовать геттеры и сеттеры или даже реализовать шаблон проектирования "Наблюдатель" (Observer pattern), чтобы уведомлять другие объекты об изменениях в текущем объекте.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 161 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир