This repository is part of the Refactoring.Guru project.
It contains C++ examples for all classic GoF design patterns. Each pattern includes two examples:
- Conceptual examples show the internal structure of patterns with detailed comments.
- RealWorld examples show how the patterns can be used in a real-world C++ application.
The examples were written as cross platform console application using c++17. It means that you should be able to compile and execute those examples with any recent compiler.
we recommend working with Visual Studio Code because it is a lightweight and cross-platform tool .It is a very complete IDE and is available for free (https://code.visualstudio.com/). You may need to install c++ extension and the compiler you prefer (The extension is still in preview and its focus is code editing, navigation, and debugging support for C and C++). For more information on how to use VSCode with c++ refer to: https://code.visualstudio.com/docs/languages/cpp .
For code execution in VSCode you will need to set up your task first. An example using g++ :
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++ -g -std=c++17 Conceptual/main.cc -o main",
            "group":{
                "kind": "build",
                "isDefault": true    
            },
            "problemMatcher":"$gcc"
        }
    ]
}Then you just need to start the executable. In case you have some doubts here you have an useful tutorial using vscode.
I appreciate any help, whether it's a simple fix of a typo or a whole new example. Just make a fork, make your change and submit a pull request.
Here's a style guide which might help you to keep your changes consistent with the rest of the project's code:
- All code should match the Google style guide.
- Aim to put all code within one .cc file. Yes, I realize that it's not how it supposed to be done in production. However, it helps people to understand examples better, since all code fits into one screen.
- The comments doesn't follow the style guide for compatibility reasons with other language examples.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
