implemented bridge pattern
This commit is contained in:
37
structural/bridge/bridge.go
Normal file
37
structural/bridge/bridge.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package bridge
|
||||
|
||||
import "fmt"
|
||||
import "errors"
|
||||
|
||||
// Bridge interface
|
||||
type Drawer interface {
|
||||
DrawRectangle(w, h int)
|
||||
}
|
||||
|
||||
type GreenRectangleDrawer struct {}
|
||||
func (d GreenRectangleDrawer) DrawRectangle(w, h int) {
|
||||
fmt.Printf("Green rectangle W: %d, H: %d", w, h)
|
||||
}
|
||||
|
||||
type RedRectangleDrawer struct {}
|
||||
func (d RedRectangleDrawer) DrawRectangle(w, h int) {
|
||||
fmt.Printf("Red rectangle W: %d, H: %d", w, h)
|
||||
}
|
||||
|
||||
type Shape interface {
|
||||
Draw() error
|
||||
}
|
||||
|
||||
type Rectangle struct {
|
||||
Width, Height int
|
||||
drawer Drawer
|
||||
}
|
||||
|
||||
func (d Rectangle) Draw () error {
|
||||
if d.drawer == nil {
|
||||
return errors.New("Drawer not initialized.")
|
||||
}
|
||||
|
||||
d.drawer.DrawRectangle(d.Width, d.Height)
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user