Sobes.tech
Senior

Povězte případ použití rozhraní v produkční logice z pohledu architektury

sobes.tech AI

Odpověď od AI

V produkční logice v jazyce Go se často používají rozhraní k dosažení nízké vazby mezi komponentami a usnadnění testování.

Například v architektuře aplikace lze definovat rozhraní pro vrstvu přístupu k datům:

// UserRepository popisuje metody pro práci s uživateli
type UserRepository interface {
    GetUserByID(id int) (*User, error)
    SaveUser(user *User) error
}

V podnikové logice (servisní vrstvě) přijímáme toto rozhraní, aniž bychom záviseli na konkrétní implementaci (například databázi nebo mock pro testy):

func NewUserService(repo UserRepository) *UserService {
    return &UserService{repo: repo}
}

func (s *UserService) GetUserProfile(id int) (*UserProfile, error) {
    user, err := s.repo.GetUserByID(id)
    if err != nil {
        return nil, err
    }
    // doplňková logika
    return &UserProfile{User: user}, nil
}

Tento přístup umožňuje:

  • Snadno měnit implementaci repozitáře (například přepínání mezi databázemi nebo použití mock pro testy).
  • Izolovat podnikovou logiku od detailů ukládání dat.
  • Zlepšit čitelnost a údržbu kódu.

V produkci to pomáhá vytvářet flexibilní a škálovatelné aplikace s jasným rozdělením odpovědností.