Sobes.tech
Back to questions
Middle+
3

Какие знаешь паттерны проектирования и какие применяешь в своей работе?

Companies where asked
Лига Цифровой ЭкономикиЛига Цифровой Экономики

Answer from AI

sobes.tech AI

Некоторые распространённые паттерны проектирования и их применение в Go:

  • Singleton — гарантирует, что класс имеет только один экземпляр. В Go часто реализуется через пакетные переменные и sync.Once.

  • Factory — создание объектов через фабричные функции, что удобно для инкапсуляции логики создания и выбора конкретных реализаций интерфейсов.

  • Decorator — добавление функциональности объектам динамически. В Go можно реализовать через обёртки функций или структур, реализующих тот же интерфейс.

  • Strategy — выбор алгоритма во время выполнения. В Go — передача функций или интерфейсов с разными реализациями.

  • Observer — подписка на события. В Go можно реализовать через каналы и горутины.

Пример фабрики в Go:

package main

type Animal interface {
    Speak() string
}

type Dog struct{}
func (d Dog) Speak() string { return "Woof!" }

type Cat struct{}
func (c Cat) Speak() string { return "Meow!" }

func AnimalFactory(animalType string) Animal {
    switch animalType {
    case "dog":
        return Dog{}
    case "cat":
        return Cat{}
    default:
        return nil
    }
}

func main() {
    a := AnimalFactory("dog")
    println(a.Speak()) // Woof!
}

В работе я применяю паттерны, которые упрощают поддержку кода, делают его более читаемым и расширяемым, например, Factory для создания сервисов, Strategy для выбора алгоритмов и Decorator для добавления логирования или кэширования.