Dear all,

as far as I know it is recommended to keep actual interfaces as small as 
possible and to form bigger interfaces via interface composiston. 
Would be great if the community could advise me what the real benefits are.

Lets say i want to create an interface for the database backend like the 
following example.

//CleanupTimestamps is the interface which holds all methods related to 
cleanupTimestamps
type CleanupTimestamps interface {
   SaveCleanupTimeStamp(taskName string, timestamp time.Time) (err error)
   GetCleanupTimeStamp(taskName string) (timestamp *time.Time, err error)
}

//ClusterFlavors interface holds all methods related to clusterFlavor
type ClusterFlavors interface {
   CreateClusterFlavor(Name string, tx StoreTransaction) (Flavor 
datatypes.ClusterFlavorPersisted, err error)
   UpdateClusterFlavor(ID string, Name string, tx StoreTransaction) (err error)
   MarkClusterFlavorDeleted(ID string, tx StoreTransaction) (err error)
   DeleteClusterFlavorPermanent(ID string, tx StoreTransaction) (err error)
   ReadClusterFlavor(ID string) (Flavor datatypes.ClusterFlavorPersisted, err 
error)
   ListClusterFlavors(Includedeleted bool) (Flavors 
[]datatypes.ClusterFlavorPersisted, err error)
}

//Store is the interface to encapsulate the Storage  Backend
type Store interface {
   MustBegin() (tx StoreTransaction)

   CleanupTimestamps
   ClusterFlavors
}


Why should I create it in that fashion if I ever use the Store interface in 
my cod? Or what are the drawbacks if I put all methods needed directly into 
the Store interface?

kind regards

Reinhard

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to