Pro e contro usando interfacce a funzione singola e tipi di funzioni in go

0

Una tipica interfaccia di servizio in go potrebbe sembrare qualcosa di simile

type EventStore interface {
  func Find(string) (*Event, error)
  func Save(*Event) error
}

type MyController struct {}

func NewMyController(EventStore) *MyEventController {
  ...
}

Questa interfaccia è iniettata nelle strutture del controllore che usa una o più delle sue funzioni. Se il controller utilizza solo la funzione Find , è ridondante conoscere Save . Potrei dividere l'intera cosa in

type EventFinder interface {
  func Find(string) (*Event, error)
}

type EventSaver interface {
  func Save(*Event) (error)
}

type EventFindersSaver interface {
  EventFinder
  EventSaver
}

type MyController struct {}

func NewMyController(EventFinder)(*MyController){
  ...
}

e iniettare solo il mirino. Potrei anche solo iniettare la ricerca usando un tipo di funzione.

type EventFinder func(string) (*Event, error)     

func NewMyController(f EventFinder) *MyController {
  ...
}

Ora, le mie domande sono

  1. È consigliabile definire sempre interfacce a singola funzione e quindi compilare interfacce più grandi da esse?
  2. Quali sono i pro / contro dell'uso dell'interfaccia a funzione singola rispetto a un tipo di funzione?
posta Erik Johansson 19.04.2017 - 09:20
fonte

0 risposte

Leggi altre domande sui tag