├── .gitignore ├── README.md ├── behavioral ├── chain-of-responsibility │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── command │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── interpreter │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── iterator │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── mediator │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── memento │ ├── problem │ │ └── main.go │ └── solution │ │ ├── main.go │ │ └── memento-command │ │ └── main.go ├── observer │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── state │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── strategy │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── template-method │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go └── visitor │ ├── problem │ └── main.go │ └── solution │ └── main.go ├── creational ├── abstract-factory │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── builder │ ├── problem │ │ └── main.go │ └── solution │ │ ├── builder │ │ ├── internal │ │ │ ├── builder.go │ │ │ ├── builder_director.go │ │ │ └── service.go │ │ └── main.go │ │ └── option-function │ │ ├── internal │ │ ├── service.go │ │ └── service_option.go │ │ └── main.go ├── factory-method │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go ├── prototype │ ├── problem │ │ └── main.go │ └── solution │ │ └── main.go └── singleton │ ├── problem │ └── main.go │ └── solution │ └── main.go ├── go.mod └── structural ├── adapter ├── problem │ └── main.go └── solution │ └── main.go ├── bridge ├── problem │ └── main.go └── solution │ └── main.go ├── composite ├── problem │ └── main.go └── solution │ └── main.go ├── decorator ├── problem │ └── main.go └── solution │ └── main.go ├── facade ├── problem │ └── main.go └── solution │ └── main.go ├── flyweight ├── problem │ └── main.go └── solution │ └── main.go └── proxy ├── problem └── main.go └── solution └── main.go /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/README.md -------------------------------------------------------------------------------- /behavioral/chain-of-responsibility/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/chain-of-responsibility/problem/main.go -------------------------------------------------------------------------------- /behavioral/chain-of-responsibility/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/chain-of-responsibility/solution/main.go -------------------------------------------------------------------------------- /behavioral/command/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/command/problem/main.go -------------------------------------------------------------------------------- /behavioral/command/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/command/solution/main.go -------------------------------------------------------------------------------- /behavioral/interpreter/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/interpreter/problem/main.go -------------------------------------------------------------------------------- /behavioral/interpreter/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/interpreter/solution/main.go -------------------------------------------------------------------------------- /behavioral/iterator/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/iterator/problem/main.go -------------------------------------------------------------------------------- /behavioral/iterator/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/iterator/solution/main.go -------------------------------------------------------------------------------- /behavioral/mediator/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/mediator/problem/main.go -------------------------------------------------------------------------------- /behavioral/mediator/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/mediator/solution/main.go -------------------------------------------------------------------------------- /behavioral/memento/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/memento/problem/main.go -------------------------------------------------------------------------------- /behavioral/memento/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/memento/solution/main.go -------------------------------------------------------------------------------- /behavioral/memento/solution/memento-command/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/memento/solution/memento-command/main.go -------------------------------------------------------------------------------- /behavioral/observer/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/observer/problem/main.go -------------------------------------------------------------------------------- /behavioral/observer/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/observer/solution/main.go -------------------------------------------------------------------------------- /behavioral/state/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/state/problem/main.go -------------------------------------------------------------------------------- /behavioral/state/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/state/solution/main.go -------------------------------------------------------------------------------- /behavioral/strategy/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/strategy/problem/main.go -------------------------------------------------------------------------------- /behavioral/strategy/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/strategy/solution/main.go -------------------------------------------------------------------------------- /behavioral/template-method/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/template-method/problem/main.go -------------------------------------------------------------------------------- /behavioral/template-method/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/template-method/solution/main.go -------------------------------------------------------------------------------- /behavioral/visitor/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/visitor/problem/main.go -------------------------------------------------------------------------------- /behavioral/visitor/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/behavioral/visitor/solution/main.go -------------------------------------------------------------------------------- /creational/abstract-factory/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/abstract-factory/problem/main.go -------------------------------------------------------------------------------- /creational/abstract-factory/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/abstract-factory/solution/main.go -------------------------------------------------------------------------------- /creational/builder/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/problem/main.go -------------------------------------------------------------------------------- /creational/builder/solution/builder/internal/builder.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/builder/internal/builder.go -------------------------------------------------------------------------------- /creational/builder/solution/builder/internal/builder_director.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/builder/internal/builder_director.go -------------------------------------------------------------------------------- /creational/builder/solution/builder/internal/service.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/builder/internal/service.go -------------------------------------------------------------------------------- /creational/builder/solution/builder/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/builder/main.go -------------------------------------------------------------------------------- /creational/builder/solution/option-function/internal/service.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/option-function/internal/service.go -------------------------------------------------------------------------------- /creational/builder/solution/option-function/internal/service_option.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/option-function/internal/service_option.go -------------------------------------------------------------------------------- /creational/builder/solution/option-function/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/builder/solution/option-function/main.go -------------------------------------------------------------------------------- /creational/factory-method/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/factory-method/problem/main.go -------------------------------------------------------------------------------- /creational/factory-method/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/factory-method/solution/main.go -------------------------------------------------------------------------------- /creational/prototype/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/prototype/problem/main.go -------------------------------------------------------------------------------- /creational/prototype/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/prototype/solution/main.go -------------------------------------------------------------------------------- /creational/singleton/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/singleton/problem/main.go -------------------------------------------------------------------------------- /creational/singleton/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/creational/singleton/solution/main.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module go-design-pattern 2 | 3 | go 1.19 4 | -------------------------------------------------------------------------------- /structural/adapter/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/adapter/problem/main.go -------------------------------------------------------------------------------- /structural/adapter/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/adapter/solution/main.go -------------------------------------------------------------------------------- /structural/bridge/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/bridge/problem/main.go -------------------------------------------------------------------------------- /structural/bridge/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/bridge/solution/main.go -------------------------------------------------------------------------------- /structural/composite/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/composite/problem/main.go -------------------------------------------------------------------------------- /structural/composite/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/composite/solution/main.go -------------------------------------------------------------------------------- /structural/decorator/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/decorator/problem/main.go -------------------------------------------------------------------------------- /structural/decorator/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/decorator/solution/main.go -------------------------------------------------------------------------------- /structural/facade/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/facade/problem/main.go -------------------------------------------------------------------------------- /structural/facade/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/facade/solution/main.go -------------------------------------------------------------------------------- /structural/flyweight/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/flyweight/problem/main.go -------------------------------------------------------------------------------- /structural/flyweight/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/flyweight/solution/main.go -------------------------------------------------------------------------------- /structural/proxy/problem/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/proxy/problem/main.go -------------------------------------------------------------------------------- /structural/proxy/solution/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/viettranx/go-design-pattern/HEAD/structural/proxy/solution/main.go --------------------------------------------------------------------------------