{"id":26201744,"url":"https://github.com/maxlen/design-patterns","last_synced_at":"2026-04-29T05:04:46.828Z","repository":{"id":281858106,"uuid":"881279566","full_name":"maxlen/design-patterns","owner":"maxlen","description":"GRASP Patterns \u0026 GoF Patterns","archived":false,"fork":false,"pushed_at":"2025-03-11T13:44:42.000Z","size":199,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T14:38:20.496Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxlen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-10-31T08:55:41.000Z","updated_at":"2025-03-11T13:44:46.000Z","dependencies_parsed_at":"2025-03-11T14:38:22.844Z","dependency_job_id":"218e9f83-6dd2-46e2-b7a6-3f435804f506","html_url":"https://github.com/maxlen/design-patterns","commit_stats":null,"previous_names":["maxlen/design-patterns"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlen%2Fdesign-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlen%2Fdesign-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlen%2Fdesign-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxlen%2Fdesign-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxlen","download_url":"https://codeload.github.com/maxlen/design-patterns/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243148140,"owners_count":20243926,"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":[],"created_at":"2025-03-12T03:23:34.341Z","updated_at":"2025-12-26T05:02:54.153Z","avatar_url":"https://github.com/maxlen.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Famous design patterns on PHP \n## (GRASP Patterns \u0026 GoF Patterns)\n\n\n### GRASP Patterns:\n- **Information Expert** [_code_](src/grasp/information-expert.php) https://habr.com/ru/companies/otus/articles/491636/\n  _Информацию обрабатываем там, где она содержится._\n\n- **Creator** [_code_](src/grasp/creator.php) https://habr.com/ru/companies/otus/articles/505618/ - _Cоздаем объекты там, где они нужны._\n\n- **Controller** - _Выносим логику многопоточности в отдельный класс или компонент._\n\n- **Low Coupling + High Cohesion** [code](src/grasp/low-coupling-high-cohesion.php) https://habr.com/ru/companies/otus/articles/505852/ \n   - _Проектируем классы с однородной бизнес-логикой и минимальным количеством связей между собой._\n\n- **Polymorphism** https://habr.com/ru/companies/otus/articles/507600/ - _Различные варианты поведения системы при необходимости оформляем в виде полиморфных вызовов._\n\n- **Pure Fabrication** — _не стесняемся создавать классы, не имеющие аналог в предметной области, если это необходимо для соблюдения Low Coupling и High Cohesion._\n\n- **Indirection** https://habr.com/ru/companies/otus/articles/521476/ — _Любой класс вызываем через его интерфейс._\n\n- **Protected Variations** https://habr.com/ru/companies/otus/articles/521476/ — применяя все вышесказанное, получаем устойчивый к изменениям код.\n   - Необходимо спроектировать систему так, чтобы изменение одних ее элементов не влияло на другие. В качестве решения предлагается идентифицировать точки возмоджных изменений или неустойчивости и распределить обязанности таким образом, чтобы обеспечить устойчивую работу системы.\n\n### GoF Patterns\n**Creational (Порождающие):**\n- **Fabric Method** [_code_](src/gof/factory-method.php) (Фабричный метод):\n    https://refactoring.guru/ru/design-patterns/factory-method\n\n- **Abstract Factory** [_code_](src/gof/abstract-factory.php) (Абстрактная фабрика):\n    https://refactoring.guru/ru/design-patterns/abstract-factory\n\n- **Prototype** [_code_](src/gof/prototype.php) (Прототип) : \n   https://refactoring.guru/ru/design-patterns/prototype\n\n- **Builder** [_code_](src/gof/builder.php) (Строитель, [Строитель с директором]((src/gof/builder-with-director.php))) : \n   https://refactoring.guru/ru/design-patterns/builder\n\n- **Singleton** [_code_](src/gof/singleton.php) (Одиночка) : \n   https://refactoring.guru/ru/design-patterns/singleton\n\n**Structural (Структурные):**\n- **Adapter** [_code_](src/gof/adapter.php) (Адаптер):\n  https://refactoring.guru/ru/design-patterns/adapter\n\n- **Bridge** [_code_](src/gof/bridge.php) (Мост):\n  https://refactoring.guru/ru/design-patterns/bridge\n\n- **Composite** [_code_](src/gof/composite.php) (Компоновщик):\n  https://refactoring.guru/ru/design-patterns/composite\n\n- **Decorator** [_code_](src/gof/decorator.php) (Декоратор):\n  https://refactoring.guru/ru/design-patterns/decorator\n\n- **Facade** [_code_](src/gof/facade.php) (Фасад):\n  https://refactoring.guru/ru/design-patterns/facade\n\n- **Flyweight** [_code_](src/gof/flyweight.php) (Легковес):\n  https://refactoring.guru/ru/design-patterns/flyweight\n\n- **Proxy** [_code_](src/gof/proxy.php) (Заместитель):\n    https://refactoring.guru/ru/design-patterns/proxy\n\n  \n**Behavioral (Поведенческие):**\n- **Chain of Responsibility** [_code_](src/gof/chain-of-responsibility.php) (Цепочка обязанностей):\n  https://refactoring.guru/ru/design-patterns/chain-of-responsibility \n- **Command** [_code_](src/gof/command.php) (Команда):\n    https://refactoring.guru/ru/design-patterns/command\n- **Interpreter** [_code_](src/gof/interpreter.php) (Интерпретатор):\n  - https://bool.dev/blog/detail/povedencheskie-patterny-interpretator-csharp\n  - https://github.com/RefactoringGuru/design-patterns-php/blob/main/src/RefactoringGuru/Interpreter/RealWorld/index.php\n- **Iterator** [_code_](src/gof/iterator.php) (Итератор):\n  https://refactoring.guru/ru/design-patterns/iterator\n- **Mediator** [_code_](src/gof/mediator.php) (Посредник):\n  https://refactoring.guru/ru/design-patterns/mediator\n- **Memento** [_code_](src/gof/memento.php) (Снимок):\n  https://refactoring.guru/ru/design-patterns/memento\n- **Observer** [_code_](src/gof/observer.php) (Наблюдатель):\n  https://refactoring.guru/ru/design-patterns/observer\n- **State** [_code_](src/gof/state.php) (Состояние):\n  https://refactoring.guru/ru/design-patterns/state\n- **Strategy** [_code_](src/gof/strategy.php) (Стратегия):\n  https://refactoring.guru/ru/design-patterns/strategy\n- **Template Method** [_code_](src/gof/template-method.php) (Шаблонный метод):\n  https://refactoring.guru/ru/design-patterns/template-method\n- **Visitor** [_code_](src/gof/visitor.php) (Посетитель):\n  https://refactoring.guru/ru/design-patterns/visitor\n\n## Getting started\n\n```\ngit clone git@github.com:maxlen/design-patterns.git\n```\n\n## Run project\n\n```\n# Go to project directory\ncd design-patterns\n\n# run particular pattern (example)\nphp src/gof/abstract-factory.php\n\n```\n## Certificate\n![Scheme](./certificate.png)\n\n### whoami\nThat git-repository created by Maxim Gavrilenko https://www.linkedin.com/in/maxim-gavrilenko\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxlen%2Fdesign-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxlen%2Fdesign-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxlen%2Fdesign-patterns/lists"}