diff --git a/creational/abstract_factory.md b/creational/abstract_factory.md new file mode 100644 index 0000000..ba9f561 --- /dev/null +++ b/creational/abstract_factory.md @@ -0,0 +1,14 @@ +# Abstract Factory Pattern + +## Implementation + +```go +``` + +## Usage + + +```go +``` + +## Rules of Thumb diff --git a/creational/abstract_factory/abstract_factory.go b/creational/abstract_factory/abstract_factory.go new file mode 100644 index 0000000..145f297 --- /dev/null +++ b/creational/abstract_factory/abstract_factory.go @@ -0,0 +1,22 @@ +package main + +import ( + "errors" + "fmt" +) + +const ( + CAR = 1 + BIKE = 2 +) + +func CreateVehicleFactory(v int) (VehicleFactory, error) { + switch v { + case CAR: + return new(CarFactory), nil + case BIKE: + return new(MotorbikeFactory), nil + default: + return nil, errors.New(fmt.Sprintf("Factory of type %d not exist\n", v)) + } +}