Как правильно спроектировать классы? Допустим, у нас есть класс 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
229 +1
2
Ответы
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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир