{"id":19766253,"url":"https://github.com/akaliutau/cs-problems-ood","last_synced_at":"2026-05-14T10:41:05.786Z","repository":{"id":120055974,"uuid":"312757331","full_name":"akaliutau/cs-problems-ood","owner":"akaliutau","description":"These are examples of OOD for different use-cases.","archived":false,"fork":false,"pushed_at":"2021-05-01T07:23:09.000Z","size":42,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-11T00:13:32.822Z","etag":null,"topics":["ood","oops-in-java","patterns"],"latest_commit_sha":null,"homepage":"","language":"Java","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/akaliutau.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":"2020-11-14T06:06:58.000Z","updated_at":"2021-05-01T07:23:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"3fa22a45-96e2-4ca5-b5f2-f082359c4fe0","html_url":"https://github.com/akaliutau/cs-problems-ood","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akaliutau%2Fcs-problems-ood","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akaliutau%2Fcs-problems-ood/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akaliutau%2Fcs-problems-ood/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akaliutau%2Fcs-problems-ood/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akaliutau","download_url":"https://codeload.github.com/akaliutau/cs-problems-ood/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241099623,"owners_count":19909577,"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":["ood","oops-in-java","patterns"],"created_at":"2024-11-12T04:23:33.572Z","updated_at":"2026-05-14T10:41:05.759Z","avatar_url":"https://github.com/akaliutau.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nAbout \n======\n\nI created this repository with aim to demonstrate the best practices in low-level OOD. In OOD these are 24 canonical patterns initially proposed by gang of four, plus various secondary, less-known patterns which are popular in designing complex systems. For example, search functionality in JPA is implemented using Specification pattern.\n\nThere are many opinions regarding usefulness of these patterns in solving real problems. Sometimes (not always, but sometimes) there makes sense to add extra complexity into system, bearing in mind all future improvements, additions and complexities - it is not easy to make changes, and better of all anticipate and include them into Grand Design from the day zero.\n\nSometimes following these patterns is not the best that you could do. In fact, to invent a new approach to solve specific use-case is often much better than to try adopting a standard one. This is all about trade-offs. If design patterns lead to more complex architecture, follow your own way.\n  \nThe best approach in this situation could be as said by one old man long time ago:\n\n\u003ci\u003eEverything should be made as simple as possible, but no simpler.\u003c/i\u003e (c) Einstein  \n\nStructure\n========== \n \nPackage \u003cb\u003ecom.design.usecases\u003c/b\u003e includes the examples of OOD for different use-cases.\n\nPackage \u003cb\u003ecom.design.patterns\u003c/b\u003e contains implementation of different popular design patterns (total 29):\n\nabstractfactory \u003cp/\u003e\nadapter \u003cp/\u003e\nbridge \u003cp/\u003e\nbuilder \u003cp/\u003e\ncommand \u003cp/\u003e\ncomposite \u003cp/\u003e\nconverter \u003cp/\u003e\ndecorator \u003cp/\u003e\nfacade \u003cp/\u003e\nfactory \u003cp/\u003e\nflyweight \u003cp/\u003e\ninterpreter \u003cp/\u003e\niterator \u003cp/\u003e\nmediator \u003cp/\u003e\nmemento \u003cp/\u003e\nnullobject \u003cp/\u003e\nobjectpool \u003cp/\u003e\nobserver \u003cp/\u003e\npipeline \u003cp/\u003e\nproperty \u003cp/\u003e\nprototype \u003cp/\u003e\nproxy \u003cp/\u003e\nchain of responsibilities \u003cp/\u003e\nsingleton \u003cp/\u003e\nspecification \u003cp/\u003e\nstate \u003cp/\u003e\nstrategy \u003cp/\u003e\ntemplate \u003cp/\u003e\nvisitor \u003cp/\u003e\n\nThis repository does not include architectural patterns and programming idioms.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakaliutau%2Fcs-problems-ood","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakaliutau%2Fcs-problems-ood","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakaliutau%2Fcs-problems-ood/lists"}