Model and code examples of GoF Design Patterns for C#.
This project is available for the following objectives:
- To understand GoF Design Pattern examples in C#.
- To understand the mapping between UML model and C# code.
- To try model-driven development (MDD) using Astah and m plus plug-in.
UML model example:
C# file example:
// ˅
using System;
using System.Collections.Generic;
using System.Text;
// ˄
namespace StructuralPatterns.Composite
{
public class File : FileSystemElement
{
// ˅
// ˄
public override string Name
{
// ˅
get;
// ˄
}
public override int Size
{
// ˅
get;
// ˄
}
public File(string name, int size)
// ˅
// ˄
{
// ˅
Name = name;
Size = size;
// ˄
}
// Print this element with the "upperPath".
public override void Print(string upperPath)
{
// ˅
Console.WriteLine($"{upperPath}/{this}");
// ˄
}
// ˅
// ˄
}
}
// ˅
// ˄
UML Modeling Tool
- Download the modeling tool Astah UML/Professional ver.10.0.0 or higher, and install.
- Download m plus plug-in ver.3.0.0-preview or higher, and add it to Astah.
How to add plugins to Astah
Visual Studio
- Download and install Visual Studio.
Check ".NET desktop development" when installing.
Code Generation from UML
- Open the Astah file (model/DesignPatternExamplesInCsharp.asta).
- Select model elements on the model browser of Astah.
- 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.
Build and Run
- Open the solution file (design-pattern-examples-in-csharp.sln) in Visual Studio.
- Set up a startup project, and run it.
- 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
This project is licensed under the Creative Commons Zero (CC0) license. The model and code are completely free to use.
C++, Crystal, Go, Java, JavaScript, Kotlin, Python, Ruby, Scala, Swift, TypeScript