design-pattern-examples-in-golang

module
v0.0.0-...-d6d939f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2024 License: CC0-1.0

README

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

Directories

Path Synopsis
behavioralpatterns
˅
command
˅
˅
˅
˅
˅
memento
˅
˅
˅
state
˅
˅
˅
˅
visitor
˅
˅
creationalpatterns
˅
˅
˅
builder
˅
˅
˅
˅
˅
˅
˅
structuralpatterns
adapter
˅
˅
bridge
˅
˅
˅
˅
facade
˅
˅
˅
proxy
˅
˅

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL