From c3ace1a31b9be0a502daa252b7a2e86149469160 Mon Sep 17 00:00:00 2001 From: Lucas Alves Date: Thu, 1 Jul 2021 00:59:42 -0300 Subject: [PATCH] Create new factory function * CreateVehicleFactory function initiate a new factory of Car or Motorbike --- creational/abstract_factory.md | 14 ++++++++++++ .../abstract_factory/abstract_factory.go | 22 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 creational/abstract_factory.md create mode 100644 creational/abstract_factory/abstract_factory.go 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)) + } +}