Как лучше организовать работу нескольких классов под одним началом? Здравствуйте. Пишу для себя набор хелперов для работы с числами, текстом, датами и так далее. В каждой сущности (текст, числа) есть набор классов, которые отвечают за обработку какой-то конкретной ситуации. Хочется их красиво как-то объединить.
Чисто для примера:class math {
public function sum($a, $b){
return (int)$a + (int)$b;
}
public function mod($a, $b) {
return (int)$a % (int)$b;
}
public function div($a, $b) {
return (int)$a / (int)$b;
}
}class math2 {
public function sumf($a, $b){
return (float)$a + (float)$b;
}
public function modf($a, $b) {
return (float)$a % (float)$b;
}
public function divf($a, $b) {
return (float)$a / (float)$b;
}
}
Хочется, что бы было как-то так (примерно) (Но может ваш пример будет лучше? Не стоит зацикливаться только на этом моё примере, я написал именно его, потому что просто не знаю о других вариантах):$math = new Number();
echo $math->sum(1, 2);
echo $math->sumf(1.3, 2.7);
Хочется получше вникнуть в правильную архитектуру в ООП, прошу помощи в более актуальном решении.

21 Авг 2019 в 07:02
180 +1
0
Ответы
1

Для организации работы нескольких классов под одним началом, вы можете использовать паттерн "Фасад" (Facade). Фасад позволяет создать единый интерфейс для взаимодействия с различными классами, скрывая их сложность и детали реализации.

В вашем случае, вы можете создать класс-фасад, который будет оборачивать все необходимые классы и предоставлять унифицированный интерфейс для работы с ними. Например:

class Number {
private $math;
private $math2;
public function __construct() {
$this->math = new Math();
$this->math2 = new Math2();
}
public function sum($a, $b) {
return $this->math->sum($a, $b);
}
public function sumf($a, $b) {
return $this->math2->sumf($a, $b);
}
// Другие методы...
}
class Math {
public function sum($a, $b) {
return (int)$a + (int)$b;
}
// Другие методы...
}
class Math2 {
public function sumf($a, $b) {
return (float)$a + (float)$b;
}
// Другие методы...
}

Теперь вы можете использовать класс Number для работы с числами, скрывая детали реализации классов Math и Math2:

$number = new Number();
echo $number->sum(1, 2); // Выведет 3
echo $number->sumf(1.3, 2.7); // Выведет 4.0

Таким образом, вы создаете единый интерфейс для работы с различными классами, что делает код более чистым и понятным.

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