{"id":15008551,"url":"https://github.com/adeldaniel/learn-design-patterns-in-dart","last_synced_at":"2026-02-07T06:31:30.328Z","repository":{"id":171975395,"uuid":"476713749","full_name":"AdelDaniel/learn-design-patterns-in-dart","owner":"AdelDaniel","description":"Made this repo just to help learning design patterns in Dart, so this repo for anyone needs to learn design patterns in Dart language. This repo also helped developers use Dart programming language by providing some examples for each pattern with many UML class diagrams.","archived":false,"fork":false,"pushed_at":"2025-01-08T17:27:57.000Z","size":7084,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T17:16:32.625Z","etag":null,"topics":["behavioral-design-patterns","creational-design-patterns","dart","dart-lang","dart-programming","dart-programming-advanced","dartlang","design-patterns","design-patterns-in-dart","designpatterns","flutter","object-oriented-programmin-in-dart","object-oriented-programming","oop","solid","solid-principles","solid-principles-examples","state-design-pattern","strategy-design-pattern","structural-design-patterns"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdelDaniel.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-01T12:35:30.000Z","updated_at":"2025-01-13T17:17:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"a69666fb-1970-4997-a889-4bd4a6a3ec3d","html_url":"https://github.com/AdelDaniel/learn-design-patterns-in-dart","commit_stats":null,"previous_names":["adeldaniel/learn-design-patterns-in-dart"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelDaniel%2Flearn-design-patterns-in-dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelDaniel%2Flearn-design-patterns-in-dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelDaniel%2Flearn-design-patterns-in-dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdelDaniel%2Flearn-design-patterns-in-dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdelDaniel","download_url":"https://codeload.github.com/AdelDaniel/learn-design-patterns-in-dart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249116205,"owners_count":21215143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["behavioral-design-patterns","creational-design-patterns","dart","dart-lang","dart-programming","dart-programming-advanced","dartlang","design-patterns","design-patterns-in-dart","designpatterns","flutter","object-oriented-programmin-in-dart","object-oriented-programming","oop","solid","solid-principles","solid-principles-examples","state-design-pattern","strategy-design-pattern","structural-design-patterns"],"created_at":"2024-09-24T19:19:20.332Z","updated_at":"2026-02-07T06:31:30.258Z","avatar_url":"https://github.com/AdelDaniel.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dart Programming Language\n\n## OOP\n\n- \u003cstrong\u003e\u003ca href=\"1_oop/\" target=\"_blank\"\u003eWhat Is OOP ?!\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"2_oop_relationships/\" target=\"_blank\"\u003eOOP Relationships ?!\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"3_solid_principles/\" target=\"_blank\"\u003eS.O.L.I.D principles ?!\u003c/a\u003e\u003c/strong\u003e\n\n## **Design Patterns**\n\n\u003e reusable solution to a commonly occurring problem within a given context in software design.\n\n- It is not a finished design that can be transformed directly into source or machine code.\n  - Rather, it is a _description_ or _template_\n  - for how to solve a problem that can be used in many different situations.\n\n- Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.\n\n- Object-oriented design patterns\n  1. show relationships and interactions\n  1. between classes or objects,\n  1. without specifying the final application classes or objects that are involved.\n\n\u003e Patterns that imply mutable state may be unsuited for functional programming languages.\n\nSome patterns can be rendered unnecessary in languages that have built-in support for solving the problem they are trying to solve, and object-oriented patterns are not necessarily suitable for non-object-oriented languages.\n\n---\n\n## **Creational Design Patterns**\n\n- **Wikipedia**\n  - Are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.\n  - The basic form of object creation could result in design problems or in added complexity to the design.\n  - Creational design patterns solve this problem by somehow controlling this object creation.\n  - Creational design patterns are composed of two dominant ideas.\n  - One is encapsulating knowledge about which concrete classes the system uses.\n  - Another is hiding how instances of these concrete classes are created and combined\n\n- **Tutorial point**\n  - a way to create objects.\n  - while hiding the creation logic, rather than instantiating objects directly using new operator.\n  - This gives program more flexibility in deciding which objects need to be created for a given use case.\n\n- \u003cstrong\u003e\u003ca href=\"creational_design_pattern/factory_method\" target=\"_blank\"\u003eFactory Method\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"creational_design_pattern/builder\" target=\"_blank\"\u003eBuilder \u003c/a\u003e\u003c/strong\u003e\n\n---\n\n## **Structural Design Patterns**\n\n- **Wikipedia**\n  - Structural patterns are concerned with how classes and objects are composed to form larger structures.\n  - Structural class patterns use inheritance to compose\n  interfaces or implementations. - As a simple example, consider how multiple\n  inheritance mixes two or more chasses into one. The result is a class that 3 combines the properties of its parent chasses.\n  \u003c!-- - This pattern is particularly useful for making iridependently developed class libraries work together.\n      - Another example is the class form of the Adapter pattern. In general, an adapter makes |one interface (the adaptee's) conform to another, thereby providing a uniform abstraction of different interfaces.A class adapter accomplishes this by 1 inheriting privately from an adaptee class. The adapter then expresses its | interface in terms of the adaptee’s. | --\u003e\n\n- **tutorial point**\n  - These design patterns concern class and object composition.\n  - Concept of inheritance is used to compose interfaces and define ways to compose objects to obtain new functionalities.\n\n- \u003cstrong\u003e\u003ca href=\"structural_design_pattern/Adapter/\" target=\"_blank\"\u003eAdapter\u003c/a\u003e\u003c/strong\u003e\n\n- \u003cstrong\u003e\u003ca href=\"structural_design_pattern/bridge/\" target=\"_blank\"\u003eBridge\u003c/a\u003e\u003c/strong\u003e\n\n- \u003cstrong\u003e\u003ca href=\"structural_design_pattern/decorator/\" target=\"_blank\"\u003eDecorator\u003c/a\u003e\u003c/strong\u003e\n\n- \u003cstrong\u003e\u003ca href=\"structural_design_pattern/facade/\" target=\"_blank\"\u003eFacade\u003c/a\u003e\u003c/strong\u003e\n\n- \u003cstrong\u003e\u003ca href=\"structural_design_pattern/proxy/\" target=\"_blank\"\u003eProxy\u003c/a\u003e\u003c/strong\u003e\n\n---\n\n## **Behavioral Design Patterns**\n\n\u003e refactoring.guru: Behavioral design patterns are concerned with `algorithms` and the `assignment` of responsibilities between objects.\n\n- **Wikipedia**\n  - behavioral design patterns are design patterns that identify `common communication patterns among objects`.\n\n- **tutorial point**\n  - These design patterns are specifically concerned `with communication between objects`.\n\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/chain_of_responsibility/\" target=\"_blank\"\u003eChain Of Responsibility\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/observer/\" target=\"_blank\"\u003eObserver\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/command/\" target=\"_blank\"\u003eCommand\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/strategy/\" target=\"_blank\"\u003eStrategy\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/state/\" target=\"_blank\"\u003eState\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/iterator/\" target=\"_blank\"\u003eIterator\u003c/a\u003e\u003c/strong\u003e\n- \u003cstrong\u003e\u003ca href=\"behavioral_design_patterns/visitor/\" target=\"_blank\"\u003eVisitor\u003c/a\u003e\u003c/strong\u003e\n\n---\n\n## **Other Patterns Not Exist In GOF**\n\n- \u003cstrong\u003e\u003ca href=\"more_important_patterns/dependency_injection/\" target=\"_blank\"\u003eDependency Injection\u003c/a\u003e\u003c/strong\u003e\n\n- \u003cstrong\u003e\u003ca href=\"more_important_patterns/service_locator/\" target=\"_blank\"\u003eService Locator\u003c/a\u003e\u003c/strong\u003e\n\n## **Interview Questions**\n\n- https://medium.com/@greekykhs/part-3-java-design-pattern-interview-questions-answers-factory-and-abstract-factory-e46b8ebb39e3\n-\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadeldaniel%2Flearn-design-patterns-in-dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadeldaniel%2Flearn-design-patterns-in-dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadeldaniel%2Flearn-design-patterns-in-dart/lists"}