У меня есть класс, который импортирует некоторых пользователей, преобразует информацию о пользователях и затем вставляет их в базу данных. У меня есть файл ImportEmployees
, который имеет метод, который вызывает 2 других класса для импорта данных. Один класс получает некоторых пользователей, соответствующих определенным критериям, а другой класс обрабатывает остальных пользователей. Эти два класса выполняют одно и то же, кроме одного метода. Один из методов - это то, что правильно извлекает данные пользователей, поэтому есть еще два дополнительных класса, которые он будет вызывать. Что такое хороший шаблон дизайна, который справляется с этим, или лучший способ справиться с этим, чтобы удалить дублирование кода.Рефакторинг PHP-файла для удаления дублирования кода
Вот точка входа класса ImportEmployees
: full class here
public function handle()
{
handle(new ImportNapaUsers($this->file));
handle(new ImportNonNapaUsers($this->file));
}
И ImportNapaUsers
класс: full class here
private function extractUsers()
{
$users = new ExtractNapaUsers($this->users);
$this->napaUsers = $users->getUsers();
}
И ImportNonNapaUsers
класс: full class here
private function extractUsers()
{
$users = new ExtractNonNapaUsers($this->users);
$this->napaUsers = $users->getUsers();
}
$this->users
- то же самое в обоих случаях. Кроме того, оба класса идентичны, за исключением метода extractUsers
.
'' identical' Нету новый ExtractNapaUsers' является а не 'new ExtractNonNapaUsers' методы не совпадают. Это ваш код на git? А если нет: зачем вы хотите это изменить? – JustOnUnderMillions
Игнорировать мой первый комментарий. «Изначальная инъекция« хорошего дизайна »- это первая задача поиска. Ваш метод 'handle()' действительно против хорошего oop. запретить использование 'new' в методе класса – JustOnUnderMillions
@JustOnUnderMillions. Я хотел бы, чтобы вы разработали. – dericcain