Interface composition
Much like a writer composes a book from a set of chapters or a chapter from a set of sections, as Go programmers, we can compose our software applications using functional composition.
We can take the functional composition approach to design a software solution that enables us to design complex APIs from a set of smaller ones.
For example, in the Viva La Duck example from the previous chapter, we composed the SurvivalBehaviors
interface from two smaller ones:
type SurvivalBehaviors interface { StrokeBehavior EatBehavior }
Nothing is difficult. Complex things are simply built upon smaller, simpler things! When we approach all our software design problems from this perspective, we are able to more easily model the real world--our applications become much easier to read and reason about.
Go's complimentary Reader and Writer interfaces
To help us appreciate how Go encourages composition, let's look at Go's complimentary Reader
and Writer
interfaces:
type Reader...