Skip to content

UML model and code examples of design patterns for Golang. The model is created with Astah.

License

Notifications You must be signed in to change notification settings

takaakit/design-pattern-examples-in-golang

Repository files navigation

Design Pattern Examples in Golang

Model and code examples of GoF Design Patterns for Golang.
This project is available for the following objectives:

  • To understand GoF Design Pattern examples in Golang.
  • To understand the mapping between UML model and Golang code.
  • To try Model-Driven Development (MDD) using Astah and M PLUS plug-in.

UML model example:

Golang code example:

// ˅
package bridge

import (
	"fmt"
	"strconv"
)

// ˄

type File struct {
	// ˅

	// ˄

	name string

	size int

	// ˅

	// ˄
}

func NewFile(name string, size int) *File {
	// ˅
	return &File{name: name, size: size}
	// ˄
}

func (f *File) GetName() string {
	// ˅
	return f.name
	// ˄
}

func (f *File) GetSize() int {
	// ˅
	return f.size
	// ˄
}

// Print this element with the "upperPath".
func (f *File) Print(upperPath string) {
	// ˅
	fmt.Println(upperPath + "/" + f.String())
	// ˄
}

func (f *File) String() string {
	// ˅
	return f.GetName() + " (" + strconv.Itoa(f.GetSize()) + ")"
	// ˄
}

// ˅

// ˄

Installation on Windows

This project uses the Walk library, which works only on Windows.

UML Modeling Tool

Golang Development Environment

  • Install Golang ver.1.22.0 or higher.
  • Run go install github.com/go-delve/delve/cmd/dlv@latest to install delve.
  • Run go install github.com/lxn/walk@latest to install Walk library.
  • Install VS Code, add Golang extension.
  • Launch VS Code. Click View -> Command Pallete (Ctrl+Shift+P) and run > Go: Install/Update Tools. Check all dependencies and click OK.

Usage on Windows

This project uses the Walk library, which works only on Windows.

Code Generation from UML

  1. Open the Astah file (model/DesignPatternExamplesInGolang.asta).
  2. Select model elements on the model browser of Astah.
  3. Click the Generate Code button.

    The generated code has User Code Area. The User Code Area is the area enclosed by "˅" and "˄". Handwritten code written in the User Code Area remains after a re-generation. View code example.
    For detailed usage of the tools, please see Astah Manual and M PLUS plug-in Tips.

Run (as a test run)

  1. Open the workspace file (design-pattern-examples-in-golang.code-workspace) in VS Code.
  2. Open main_test.go for the pattern you want to run, and click Run > Start Debugging (or press F5).

References

  • Gamma, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1994
  • Hiroshi Yuki. Learning Design Patterns in Java [In Japanese Language], Softbank publishing, 2004
  • Schmager, F. Evaluating the GO Programming Language with Design Patterns, 2010

Licence

This project is licensed under the Creative Commons Zero (CC0) license. The model and code are completely free to use.

CC0

Other Language Examples

C++, C#, Crystal, Java, JavaScript, Kotlin, Python, Ruby, Scala, Swift, TypeScript

About

UML model and code examples of design patterns for Golang. The model is created with Astah.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages