It contains Dart examples for all classic GoF design patterns.
- Creation
- Abstract Factory [Conceptual Gui Factory] [ Tool Panel Factory]
- Builder - [Conceptual] [Color Text Format]
- Factory Method [Conceptual Platform Dialog]
- Prototype - [Shapes]
- Singleton - [Conceptual]
- Behavioral
- Chain of Responsibility - [Server Middleware]
- Command - [Conceptual] [Text Editor]
- Interpreter - [Conceptual]
- Iterator - [Word Iterator] [Github Commit]
- Mediator - [Conceptual]
- Memento - [Conceptual] [ Memento Editor]
- Observer - [Open-Close Editor Events] [AppObserver] [ Subscriber Flutter Widget]
- State - [Conceptual] [ State Manipulator]
- Template Method - [Data Miner]
- Visitor - [Conceptual] [Shape XML Exporter]
- Strategy [View Strategy] [Reservation Cargo Spaces]
- Structural
- Adapter - [Text Graphics] [Square Round conflict] [ Flutter Adapter]
- Bridge - [Remote Device Control] [Clock]
- Composite - [Image Editor] [Products and Boxes]
- Decorator - [Data Source Decoder]
- Facade - [Conceptual]
- Flyweight - [Conceptual]
- Proxy - [Conceptual]
The examples were written in Dart 3.6.0. Some complex examples require Flutter 3.27.1.
We appreciate any help, whether it's a simple fix of a typo or a whole new example. Just make a fork, do your change and submit a pull request.
- Just make a fork.
- Clone the forked repository to your local machine.
- Create a new branch and name it, for example: fix-issue-32.
- Make changes.
- Create commits and push them to your forked Github repository.
- Submit a pull request to the master branch.
- Wait for review.
Here's a style guide which might help you to keep your changes consistent with our code:
-
All code should meet the Effective Dart: Style.
-
Use Dart Format or auto format shortcut
Ctrl + Alt + L
in your ide. -
Try to hard wrap the code at 80th's character. It helps to list the code on the website without scrollbars.
-
File names should match following convention:
some_class_name.dart
-
Comments may or may not have language tags in them, such as this:
// EN: All products families have the same varieties (MacOS/Windows). // This is a MacOS variant of a button.
Don't be scared and ignore the non-English part of such comments. If you want to change something in a comment like this, then do it. Even if you do it wrong, we'll tell you how to fix it during the Pull Request.
cd root directory
flutter build web -t bin\main.dart
- Fork this repo:
https://github.com/ilopX/design-patterns-dart
- Apply your changes.
- Run the script
dart bin\deploy_flutter_demos.dart
. This script will build a web platform flutter app and push the changes to your web-demos branch on github. - You can now make a pull request on the web-demos branch.
- Once approved for the merge, the web app will be available at https://ilopX.github.io/design-patterns-dart .
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Authors: ilopX (@ilopX)