Junior — Middle
Layihələrdə Inversion of Control konseptinin tətbiqi təcrübənizi paylaşa bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da Inversion of Control (IoC) tətbiqi adətən asılılıqları quruculara və ya funksiyalara ötürməklə əldə edilir, digər dillərdəki kimi çərçivələr vasitəsilə deyil. Məsələn, struktura daxilində asılılıqları yaratmaq yerinə, onları xaricdən ötürürük, bu da test etməyi asanlaşdırır və çevikliyi artırır.
Nümunə:
// Logger üçün interfeys
type Logger interface {
Log(message string)
}
// Logger tətbiqi
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Logger-dən asılı olan xidmət
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("İş tamamlandı")
}
// İstifadə
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Bu yanaşma asılılıqları asanlıqla dəyişdirməyə və vahid testləri sadələşdirməyə imkan verir.