{"id":27155625,"url":"https://github.com/hu2di/java-design-pattern","last_synced_at":"2025-04-08T19:56:36.083Z","repository":{"id":242095648,"uuid":"86289982","full_name":"hu2di/java-design-pattern","owner":"hu2di","description":"Self study design pattern","archived":false,"fork":false,"pushed_at":"2020-06-04T12:00:09.000Z","size":2596,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-31T16:59:28.078Z","etag":null,"topics":["algorithm","design-patterns","java"],"latest_commit_sha":null,"homepage":null,"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/hu2di.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":"2017-03-27T04:05:00.000Z","updated_at":"2024-05-31T16:59:40.356Z","dependencies_parsed_at":"2024-05-31T16:59:39.556Z","dependency_job_id":"42b903f2-d878-4e04-9105-39510562f920","html_url":"https://github.com/hu2di/java-design-pattern","commit_stats":null,"previous_names":["hu2di/java-design-pattern"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hu2di%2Fjava-design-pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hu2di%2Fjava-design-pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hu2di%2Fjava-design-pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hu2di%2Fjava-design-pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hu2di","download_url":"https://codeload.github.com/hu2di/java-design-pattern/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247918927,"owners_count":21018044,"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":["algorithm","design-patterns","java"],"created_at":"2025-04-08T19:56:35.526Z","updated_at":"2025-04-08T19:56:36.045Z","avatar_url":"https://github.com/hu2di.png","language":"Java","readme":"### java-design-pattern\nI'm learning design pattern by myself :)))\n\u003cbr/\u003eFrom: https://www.tutorialspoint.com/design_pattern\n\n### 23 Patterns\n1. Creational\n- Abstract factory pattern: groups object factories that have a common theme.\n- Builder pattern: constructs complex objects by separating construction and representation.\n- Factory method pattern: creates objects without specifying the exact class to create.\n- Prototype pattern: creates objects by cloning an existing object.\n- Singleton pattern: restricts object creation for a class to only one instance.\n\n2. Structural\n- Adapter: allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.\n- Bridge: decouples an abstraction from its implementation so that the two can vary independently.\n- Composite: composes zero-or-more similar objects so that they can be manipulated as one object.\n- Decorator: dynamically adds/overrides behaviour in an existing method of an object.\n- Facade: provides a simplified interface to a large body of code.\n- Flyweight: reduces the cost of creating and manipulating a large number of similar objects.\n- Proxy: provides a placeholder for another object to control access, reduce cost, and reduce complexity.\n\n3. Behavioral\n- Chain of responsibility: delegates commands to a chain of processing objects.\n- Command: creates objects which encapsulate actions and parameters.\n- Interpreter: implements a specialized language.\n- Iterator: accesses the elements of an object sequentially without exposing its underlying representation.\n- Mediator: allows loose coupling between classes by being the only class that has detailed knowledge of their methods.\n- Memento: provides the ability to restore an object to its previous state (undo).\n- Observer: is a publish/subscribe pattern which allows a number of observer objects to see an event.\n- State: allows an object to alter its behavior when its internal state changes.\n- Strategy: allows one of a family of algorithms to be selected on-the-fly at runtime.\n- Template method: defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.\n- Visitor: separates an algorithm from an object structure by moving the hierarchy of methods into one object.\n\n### vietnamese\n- Mediator: một lớp ở giữa liên kết các thành phần hay trao đổi dữ liệu với nhau\n- Adapter: chuyển đổi oldObj sang newObj\n- Proxy: giả lập tương tác cục bộ thay cho từ xa\n- Observer: đăng ký với hệ thống để lắng nghe sự thay đổi\n\n- Strategy: bỏ các phương thức hay thay đổi ra khỏi lớp, tạo thành một tập các giải thuật riêng\n\n- Decorator\n- Factory\n\n### About\n- Created by HuyHung Dinh\n- GitHub: https://github.com/hu2di\n- Email: hebitaxy@gmail.com\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhu2di%2Fjava-design-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhu2di%2Fjava-design-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhu2di%2Fjava-design-pattern/lists"}