Отладка класса как синглтона?

1

Мой вопрос прост: должен ли я создать свой класс Debug как singleton?

Я знаю, что одноэлементный шаблон - это плохая практика, но класс отладки не участвует в логике приложения, и он бы усложнил все приложение для ввода класса отладки в каждый класс.

Мой класс отладки будет содержать такие методы, как:

Debug::message();
Debug::dump();
Debug::spot(); // To create a timeline
// etc

Следует также отметить, что я использую пакет debugbar и что он будет присутствовать только в режиме dev, поэтому мой класс отладки будет выглядеть, если пакет присутствует, и если да, то он передаст информацию, иначе он будет просто ничего не делайте (или, возможно, записывайте важные вещи).

Теги:

1 ответ

1
Лучший ответ

Итак, вы хотите сделать статические вызовы, чтобы избежать броска вокруг экземпляра вашего класса отладки. Имеет смысл.

И если вы хотите использовать статические вызовы, альтернативой синглону будет писать класс, состоящий только из статических свойств/методов.

Решение о том, идете ли вы для этого или для синглета, довольно просто: имеет ли этот класс внутреннее состояние и/или требует конструктор? Например, если вы открываете файл журнала или создаете экземпляр других объектов, вам определенно нужен синглтон.

Синглтон нахмурился, и для этого есть веские причины. Но есть ситуации, когда это имеет смысл и является допустимым подходом.

Вы отмечаете, что хотите создать временную шкалу, поэтому я предполагаю, что вам нужно инициализировать временную метку. У вас есть метод dump, поэтому я предполагаю, что вы хотите собрать определенную информацию, чтобы свалить ее позже. Эти вещи обычно имеют состояние.

Конечно, вы могли бы вызвать какой-то Debug::init() в верхней части каждого публичного метода, но это было бы глупо и хуже, чем синглтон.

Итак, в вашем конкретном случае, я думаю, что синглтон действительно имел бы смысл.

  • 0
    Спасибо. Это убедило меня, что использование статических вызовов может быть принято в некоторых случаях. Я думаю, что я пойду с одиночным, чтобы я мог передать свой экземпляр панели отладки в начале сценария.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню