28 lines
630 B
Go
28 lines
630 B
Go
package abstract_factory
|
|
|
|
import (
|
|
"fmt"
|
|
"errors"
|
|
)
|
|
|
|
const (
|
|
CAR = 1
|
|
BUS = 2
|
|
)
|
|
|
|
/**
|
|
* CreateVehicleFactory function makes subfamily factories of Vehicle
|
|
* family. The goal is to split object family creation complexity
|
|
* into small blocks in order to make it easy to read and maintain.
|
|
* It basicaly delegates subfamily object creations to subfamily factories.
|
|
*/
|
|
func CreateVehicleFactory(vfType int) (VehicleFactory, error) {
|
|
switch vfType {
|
|
case CAR:
|
|
return new(CarFactory), nil
|
|
case BUS:
|
|
return new(BusFactory), nil
|
|
default:
|
|
return nil, errors.New(fmt.Sprintf("Unrecognized factory type:%d", vfType))
|
|
}
|
|
} |