Documentation
¶
Overview ¶
Example (One) ¶
car := NewAutomobile() moto := NewMotocycle() forward := NewMoveForwardAction() car.Accept(forward) moto.Accept(forward) drift := NewDriftAction() car.Accept(drift) moto.Accept(drift)
Output: Automobile is moving forward fastly Motocycle is moving forward slowly Automobile is drifting stably Motocycle is drifting carefully
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Automobile ¶
type Automobile struct{}
func NewAutomobile ¶
func NewAutomobile() *Automobile
func (*Automobile) Accept ¶
func (p *Automobile) Accept(action VehicleAction)
type DriftAction ¶
type DriftAction struct{}
func NewDriftAction ¶
func NewDriftAction() *DriftAction
func (*DriftAction) VisitAutomobile ¶
func (p *DriftAction) VisitAutomobile(automobile *Automobile)
func (*DriftAction) VisitMotocycle ¶
func (p *DriftAction) VisitMotocycle(motocycle *Motocycle)
type Motocycle ¶
type Motocycle struct{}
func NewMotocycle ¶
func NewMotocycle() *Motocycle
func (*Motocycle) Accept ¶
func (p *Motocycle) Accept(action VehicleAction)
type MoveForwardAction ¶
type MoveForwardAction struct{}
func NewMoveForwardAction ¶
func NewMoveForwardAction() *MoveForwardAction
func (*MoveForwardAction) VisitAutomobile ¶
func (p *MoveForwardAction) VisitAutomobile(automobile *Automobile)
func (*MoveForwardAction) VisitMotocycle ¶
func (p *MoveForwardAction) VisitMotocycle(motocycle *Motocycle)
type Vehicle ¶
type Vehicle interface {
Accept(action VehicleAction)
}
type VehicleAction ¶
type VehicleAction interface {
VisitMotocycle(motocycle *Motocycle)
VisitAutomobile(automobile *Automobile)
}
Click to show internal directories.
Click to hide internal directories.