From 1ea98bb8d5ee57cd72b7bffc87a3fd4282a5cda1 Mon Sep 17 00:00:00 2001 From: JanFidor <66260538+JanFidor@users.noreply.github.com> Date: Wed, 26 Oct 2022 19:26:04 +0200 Subject: [PATCH 01/14] enhancement: #1947 implement chain of responsibilities with java stream (#2123) --- chain-of-responsibility/README.md | 12 +++-- .../etc/chain-of-responsibility.urm.png | Bin 60093 -> 134845 bytes .../etc/chain-of-responsibility.urm.puml | 50 ++++++++++-------- .../java/com/iluwatar/chain/OrcCommander.java | 26 +++++---- .../main/java/com/iluwatar/chain/OrcKing.java | 19 +++++-- .../java/com/iluwatar/chain/OrcOfficer.java | 28 +++++----- .../java/com/iluwatar/chain/OrcSoldier.java | 26 +++++---- .../com/iluwatar/chain/RequestHandler.java | 25 ++------- 8 files changed, 103 insertions(+), 83 deletions(-) diff --git a/chain-of-responsibility/README.md b/chain-of-responsibility/README.md index 409915209d9e..8f1fc9918ab4 100644 --- a/chain-of-responsibility/README.md +++ b/chain-of-responsibility/README.md @@ -118,18 +118,24 @@ The Orc King gives the orders and forms the chain. ```java public class OrcKing { - RequestHandler chain; + + private List handlers; public OrcKing() { buildChain(); } private void buildChain() { - chain = new OrcCommander(new OrcOfficer(new OrcSoldier(null))); + handlers = Arrays.asList(new OrcCommander(), new OrcOfficer(), new OrcSoldier()); } public void makeRequest(Request req) { - chain.handleRequest(req); + handlers + .stream() + .sorted(Comparator.comparing(RequestHandler::getPriority)) + .filter(handler -> handler.canHandleRequest(req)) + .findFirst() + .ifPresent(handler -> handler.handle(req)); } } ``` diff --git a/chain-of-responsibility/etc/chain-of-responsibility.urm.png b/chain-of-responsibility/etc/chain-of-responsibility.urm.png index c3a4c80ba322503e86be815d9af389597c212312..af1bd105455b7b9bdc540248ce3b9d3d4220d541 100644 GIT binary patch literal 134845 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

P$|nVfGFUS8`f=q!dG_>ob#|ia2?5Us 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 UzM=;+L_r37y85}Sb4q9e01i2RNB{r; literal 60093 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 L^>bP0l+XkKhV(}E diff --git a/chain-of-responsibility/etc/chain-of-responsibility.urm.puml b/chain-of-responsibility/etc/chain-of-responsibility.urm.puml index 43c78a04223e..b548cab81847 100644 --- a/chain-of-responsibility/etc/chain-of-responsibility.urm.puml +++ b/chain-of-responsibility/etc/chain-of-responsibility.urm.puml @@ -5,25 +5,34 @@ package com.iluwatar.chain { + main(args : String[]) {static} } class OrcCommander { - + OrcCommander(handler : RequestHandler) - + handleRequest(req : Request) - + toString() : String + - LOGGER : Logger {static} + + OrcCommander() + + canHandleRequest(req : Request) : boolean + + getPriority() : int + + handle(req : Request) + + name() : String } class OrcKing { - - chain : RequestHandler + - handlers : List + OrcKing() - buildChain() + makeRequest(req : Request) } class OrcOfficer { - + OrcOfficer(handler : RequestHandler) - + handleRequest(req : Request) - + toString() : String + - LOGGER : Logger {static} + + OrcOfficer() + + canHandleRequest(req : Request) : boolean + + getPriority() : int + + handle(req : Request) + + name() : String } class OrcSoldier { - + OrcSoldier(handler : RequestHandler) - + handleRequest(req : Request) - + toString() : String + - LOGGER : Logger {static} + + OrcSoldier() + + canHandleRequest(req : Request) : boolean + + getPriority() : int + + handle(req : Request) + + name() : String } class Request { - handled : boolean @@ -36,13 +45,11 @@ package com.iluwatar.chain { + markHandled() + toString() : String } - abstract class RequestHandler { - - LOGGER : Logger {static} - - next : RequestHandler - + RequestHandler(next : RequestHandler) - + handleRequest(req : Request) - # printHandling(req : Request) - + toString() : String {abstract} + interface RequestHandler { + + canHandleRequest(Request) : boolean {abstract} + + getPriority() : int {abstract} + + handle(Request) {abstract} + + name() : String {abstract} } enum RequestType { + COLLECT_TAX {static} @@ -52,10 +59,9 @@ package com.iluwatar.chain { + values() : RequestType[] {static} } } -OrcKing --> "-chain" RequestHandler -RequestHandler --> "-next" RequestHandler +OrcKing --> "-handlers" RequestHandler Request --> "-requestType" RequestType -OrcCommander --|> RequestHandler -OrcOfficer --|> RequestHandler -OrcSoldier --|> RequestHandler +OrcCommander ..|> RequestHandler +OrcOfficer ..|> RequestHandler +OrcSoldier ..|> RequestHandler @enduml \ No newline at end of file diff --git a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcCommander.java b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcCommander.java index d99bd214204f..70ea09463507 100644 --- a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcCommander.java +++ b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcCommander.java @@ -24,27 +24,31 @@ */ package com.iluwatar.chain; +import lombok.extern.slf4j.Slf4j; + /** * OrcCommander. */ -public class OrcCommander extends RequestHandler { +@Slf4j +public class OrcCommander implements RequestHandler { + @Override + public boolean canHandleRequest(Request req) { + return req.getRequestType() == RequestType.DEFEND_CASTLE; + } - public OrcCommander(RequestHandler handler) { - super(handler); + @Override + public int getPriority() { + return 2; } @Override - public void handleRequest(Request req) { - if (RequestType.DEFEND_CASTLE == req.getRequestType()) { - printHandling(req); - req.markHandled(); - } else { - super.handleRequest(req); - } + public void handle(Request req) { + req.markHandled(); + LOGGER.info("{} handling request \"{}\"", name(), req); } @Override - public String toString() { + public String name() { return "Orc commander"; } } diff --git a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcKing.java b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcKing.java index 842ff4197206..c01aa151a5be 100644 --- a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcKing.java +++ b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcKing.java @@ -24,23 +24,34 @@ */ package com.iluwatar.chain; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + /** * OrcKing makes requests that are handled by the chain. */ public class OrcKing { - private RequestHandler chain; + private List handlers; public OrcKing() { buildChain(); } private void buildChain() { - chain = new OrcCommander(new OrcOfficer(new OrcSoldier(null))); + handlers = Arrays.asList(new OrcCommander(), new OrcOfficer(), new OrcSoldier()); } + /** + * Handle request by the chain. + */ public void makeRequest(Request req) { - chain.handleRequest(req); + handlers + .stream() + .sorted(Comparator.comparing(RequestHandler::getPriority)) + .filter(handler -> handler.canHandleRequest(req)) + .findFirst() + .ifPresent(handler -> handler.handle(req)); } - } diff --git a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcOfficer.java b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcOfficer.java index b99b36ff5633..7138a001ce55 100644 --- a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcOfficer.java +++ b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcOfficer.java @@ -24,28 +24,32 @@ */ package com.iluwatar.chain; +import lombok.extern.slf4j.Slf4j; + /** * OrcOfficer. */ -public class OrcOfficer extends RequestHandler { +@Slf4j +public class OrcOfficer implements RequestHandler { + @Override + public boolean canHandleRequest(Request req) { + return req.getRequestType() == RequestType.TORTURE_PRISONER; + } - public OrcOfficer(RequestHandler handler) { - super(handler); + @Override + public int getPriority() { + return 3; } @Override - public void handleRequest(Request req) { - if (RequestType.TORTURE_PRISONER == req.getRequestType()) { - printHandling(req); - req.markHandled(); - } else { - super.handleRequest(req); - } + public void handle(Request req) { + req.markHandled(); + LOGGER.info("{} handling request \"{}\"", name(), req); } @Override - public String toString() { + public String name() { return "Orc officer"; } - } + diff --git a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcSoldier.java b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcSoldier.java index fd906620afb4..6650b34746ca 100644 --- a/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcSoldier.java +++ b/chain-of-responsibility/src/main/java/com/iluwatar/chain/OrcSoldier.java @@ -24,27 +24,31 @@ */ package com.iluwatar.chain; +import lombok.extern.slf4j.Slf4j; + /** * OrcSoldier. */ -public class OrcSoldier extends RequestHandler { +@Slf4j +public class OrcSoldier implements RequestHandler { + @Override + public boolean canHandleRequest(Request req) { + return req.getRequestType() == RequestType.COLLECT_TAX; + } - public OrcSoldier(RequestHandler handler) { - super(handler); + @Override + public int getPriority() { + return 1; } @Override - public void handleRequest(Request req) { - if (RequestType.COLLECT_TAX == req.getRequestType()) { - printHandling(req); - req.markHandled(); - } else { - super.handleRequest(req); - } + public void handle(Request req) { + req.markHandled(); + LOGGER.info("{} handling request \"{}\"", name(), req); } @Override - public String toString() { + public String name() { return "Orc soldier"; } } diff --git a/chain-of-responsibility/src/main/java/com/iluwatar/chain/RequestHandler.java b/chain-of-responsibility/src/main/java/com/iluwatar/chain/RequestHandler.java index 7625a45b8ae8..ca46c44bbc2d 100644 --- a/chain-of-responsibility/src/main/java/com/iluwatar/chain/RequestHandler.java +++ b/chain-of-responsibility/src/main/java/com/iluwatar/chain/RequestHandler.java @@ -24,31 +24,16 @@ */ package com.iluwatar.chain; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; - /** * RequestHandler. */ -@Slf4j -@AllArgsConstructor -public abstract class RequestHandler { +public interface RequestHandler { - private final RequestHandler next; + boolean canHandleRequest(Request req); - /** - * Request handler. - */ - public void handleRequest(Request req) { - if (next != null) { - next.handleRequest(req); - } - } + int getPriority(); - protected void printHandling(Request req) { - LOGGER.info("{} handling request \"{}\"", this, req); - } + void handle(Request req); - @Override - public abstract String toString(); + String name(); } From 7331a1dbca45cdb7fe9497140af7fb1ffb0c7261 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:27:28 +0300 Subject: [PATCH 02/14] docs: add JanFidor as a contributor for code (#2178) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index ae6461903aea..8aeadfedcf9e 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2033,6 +2033,15 @@ "contributions": [ "translation" ] + }, + { + "login": "JanFidor", + "name": "JanFidor", + "avatar_url": "https://avatars.githubusercontent.com/u/66260538?v=4", + "profile": "https://github.com/JanFidor", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index ffeb084ff925..992b54df68cc 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-223-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-224-orange.svg?style=flat-square)](#contributors-)
@@ -361,6 +361,7 @@ This project is licensed under the terms of the MIT license. Qixiang Chen
Qixiang Chen

๐Ÿ“– Shourya Manekar
Shourya Manekar

๐ŸŒ Alan
Alan

๐ŸŒ + JanFidor
JanFidor

๐Ÿ’ป From 6e9ea392757d39fe52ea2b49e04bbaacec431920 Mon Sep 17 00:00:00 2001 From: kongleong86 Date: Wed, 26 Oct 2022 18:33:57 +0100 Subject: [PATCH 03/14] refactoring #1012: Remove deprecated method to ease Hibernate upgrade (#2125) * refactoring #1012: Remove deprecated method to ease Hibernate upgrade later on * refactoring #1012: Fix checkstyle violation --- .../servicelayer/common/DaoBaseImpl.java | 23 +++++++++++++------ .../servicelayer/spell/SpellDaoImpl.java | 15 ++++++++---- .../spellbook/SpellbookDaoImpl.java | 15 ++++++++---- .../servicelayer/wizard/WizardDaoImpl.java | 14 +++++++---- .../magic/MagicServiceImplTest.java | 21 ++++++++--------- 5 files changed, 58 insertions(+), 30 deletions(-) diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java index 8c3415881a9b..46981c76ddc2 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java @@ -27,10 +27,12 @@ import com.iluwatar.servicelayer.hibernate.HibernateUtil; import java.lang.reflect.ParameterizedType; import java.util.List; -import org.hibernate.Criteria; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.SessionFactory; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; /** * Base class for Dao implementations. @@ -57,9 +59,12 @@ public E find(Long id) { E result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.idEq(id)); - result = (E) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(persistentClass); + Root root = builderQuery.from(persistentClass); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("id"), id)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { @@ -123,8 +128,12 @@ public List findAll() { List result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - Criteria criteria = session.createCriteria(persistentClass); - result = criteria.list(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(persistentClass); + Root root = builderQuery.from(persistentClass); + builderQuery.select(root); + Query query = session.createQuery(builderQuery); + result = query.getResultList(); } catch (Exception e) { if (tx != null) { tx.rollback(); diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java index 53de9b6ec241..5ee39f4be733 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java @@ -25,8 +25,12 @@ package com.iluwatar.servicelayer.spell; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; + /** * SpellDao implementation. @@ -39,9 +43,12 @@ public Spell findByName(String name) { Spell result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Spell) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Spell.class); + Root root = builderQuery.from(Spell.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java index d68f7253e8ad..463b06cdd369 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java @@ -25,8 +25,12 @@ package com.iluwatar.servicelayer.spellbook; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; + /** * SpellbookDao implementation. @@ -39,9 +43,12 @@ public Spellbook findByName(String name) { Spellbook result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Spellbook) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Spellbook.class); + Root root = builderQuery.from(Spellbook.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java index 043b96d5418b..d35c9b0ca21b 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java @@ -25,8 +25,11 @@ package com.iluwatar.servicelayer.wizard; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; /** * WizardDao implementation. @@ -39,9 +42,12 @@ public Wizard findByName(String name) { Wizard result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Wizard) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Wizard.class); + Root root = builderQuery.from(Wizard.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java index 491fd24467aa..c145f8e5f978 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java @@ -26,11 +26,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import com.iluwatar.servicelayer.spell.Spell; @@ -56,7 +55,7 @@ void testFindAllWizards() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllWizards(); verify(wizardDao).findAll(); @@ -70,7 +69,7 @@ void testFindAllSpellbooks() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllSpellbooks(); verify(spellbookDao).findAll(); @@ -84,7 +83,7 @@ void testFindAllSpells() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllSpells(); verify(spellDao).findAll(); @@ -103,17 +102,17 @@ void testFindWizardsWithSpellbook() { when(spellbook.getWizards()).thenReturn(wizards); final var spellbookDao = mock(SpellbookDao.class); - when(spellbookDao.findByName(eq(bookname))).thenReturn(spellbook); + when(spellbookDao.findByName(bookname)).thenReturn(spellbook); final var wizardDao = mock(WizardDao.class); final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao, spellbook); + verifyNoInteractions(wizardDao, spellbookDao, spellDao, spellbook); final var result = service.findWizardsWithSpellbook(bookname); - verify(spellbookDao).findByName(eq(bookname)); + verify(spellbookDao).findByName(bookname); verify(spellbook).getWizards(); assertNotNull(result); @@ -140,13 +139,13 @@ void testFindWizardsWithSpell() throws Exception { final var spellName = "spellname"; final var spellDao = mock(SpellDao.class); - when(spellDao.findByName(eq(spellName))).thenReturn(spell); + when(spellDao.findByName(spellName)).thenReturn(spell); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao, spellbook); + verifyNoInteractions(wizardDao, spellbookDao, spellDao, spellbook); final var result = service.findWizardsWithSpell(spellName); - verify(spellDao).findByName(eq(spellName)); + verify(spellDao).findByName(spellName); verify(spellbook).getWizards(); assertNotNull(result); From 0a04da1f5877e44526b6ba39a63051140a7af03e Mon Sep 17 00:00:00 2001 From: JanFidor <66260538+JanFidor@users.noreply.github.com> Date: Wed, 26 Oct 2022 19:38:25 +0200 Subject: [PATCH 04/14] docs: #590 explanation for a delegation pattern (#2127) --- delegation/README.md | 91 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/delegation/README.md b/delegation/README.md index 8556c5a89cd2..de3011cf2468 100644 --- a/delegation/README.md +++ b/delegation/README.md @@ -13,6 +13,97 @@ Proxy Pattern It is a technique where an object expresses certain behavior to the outside but in reality delegates responsibility for implementing that behaviour to an associated object. +## Explanation + +Real-world example + +> Imagine that we have adventurers who fight monsters with different weapons depending on their +> abilities and skills. We must be able to equip them with different ones without having to +> modify their source code for each one. The delegation pattern makes it possible by delegating +> the dynamic work to a specific object implementing an interface with relevant methods. + +Wikipedia says + +> In object-oriented programming, delegation refers to evaluating a member (property or method) of +> one object (the receiver) in the context of another original object (the sender). Delegation can +> be done explicitly, by passing the sending object to the receiving object, which can be done in +> any object-oriented language; or implicitly, by the member lookup rules of the language, which +> requires language support for the feature. + +**Programmatic Example** + +We have an interface `Printer` and three implementations `CanonPrinter`, `EpsonPrinter` and `HpPrinter`. + +```java +public interface Printer { + void print(final String message); +} + +@Slf4j +public class CanonPrinter implements Printer { + @Override + public void print(String message) { + LOGGER.info("Canon Printer : {}", message); + } +} + +@Slf4j +public class EpsonPrinter implements Printer { + @Override + public void print(String message) { + LOGGER.info("Epson Printer : {}", message); + } +} + +@Slf4j +public class HpPrinter implements Printer { + @Override + public void print(String message) { + LOGGER.info("HP Printer : {}", message); + } +} +``` +The `PrinterController` can be used as a `Printer` by delegating any work handled by this +interface to an object implementing it. +```java +public class PrinterController implements Printer { + + private final Printer printer; + + public PrinterController(Printer printer) { + this.printer = printer; + } + + @Override + public void print(String message) { + printer.print(message); + } +} +``` + +Now on the client code printer controllers can print messages differently depending on the +object they're delegating that work to. + +```java +private static final String MESSAGE_TO_PRINT = "hello world"; + +var hpPrinterController = new PrinterController(new HpPrinter()); +var canonPrinterController = new PrinterController(new CanonPrinter()); +var epsonPrinterController = new PrinterController(new EpsonPrinter()); + +hpPrinterController.print(MESSAGE_TO_PRINT); +canonPrinterController.print(MESSAGE_TO_PRINT); +epsonPrinterController.print(MESSAGE_TO_PRINT) +``` + +Program output: + +```java +HP Printer : hello world +Canon Printer : hello world +Epson Printer : hello world +``` + ## Class diagram ![alt text](./etc/delegation.png "Delegate") From 3dcda6f2457b27e4b0652ddd9f07e9c6b5b6d4c1 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 26 Oct 2022 20:43:25 +0300 Subject: [PATCH 05/14] docs: add JanFidor as a contributor for doc (#2180) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> Co-authored-by: Ilkka Seppรคlรค --- .all-contributorsrc | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 8aeadfedcf9e..18700ac9c8ba 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2040,7 +2040,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/66260538?v=4", "profile": "https://github.com/JanFidor", "contributions": [ - "code" + "code", + "doc" ] } ], diff --git a/README.md b/README.md index 992b54df68cc..9663eb22da27 100644 --- a/README.md +++ b/README.md @@ -361,7 +361,7 @@ This project is licensed under the terms of the MIT license. Qixiang Chen
Qixiang Chen

๐Ÿ“– Shourya Manekar
Shourya Manekar

๐ŸŒ Alan
Alan

๐ŸŒ - JanFidor
JanFidor

๐Ÿ’ป + JanFidor
JanFidor

๐Ÿ’ป ๐Ÿ“– From e9cf765e1e2aa4070333cdb46013dcec63ce59b9 Mon Sep 17 00:00:00 2001 From: Anton Yakutovich Date: Fri, 28 Oct 2022 23:27:14 +0400 Subject: [PATCH 06/14] dependencies: Bump GitHub Actions (#2074) --- .github/workflows/maven-ci.yml | 10 +++++----- .github/workflows/maven-pr-builder.yml | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/maven-ci.yml b/.github/workflows/maven-ci.yml index 3b1bcafb0630..1f490cf31be8 100644 --- a/.github/workflows/maven-ci.yml +++ b/.github/workflows/maven-ci.yml @@ -44,13 +44,13 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: # Disabling shallow clone for improving relevancy of SonarQube reporting fetch-depth: 0 - name: Set up JDK 11.0.3 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: 11.0.3 distribution: 'zulu' @@ -58,7 +58,7 @@ jobs: # Cache Sonar packages which as used to run anaylysis and collect metrics - name: Cache SonarCloud packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar @@ -84,10 +84,10 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up JDK 11 (Latest) - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: 11 distribution: 'zulu' diff --git a/.github/workflows/maven-pr-builder.yml b/.github/workflows/maven-pr-builder.yml index 8e5c5d9c7ced..66d39d40df7a 100644 --- a/.github/workflows/maven-pr-builder.yml +++ b/.github/workflows/maven-pr-builder.yml @@ -42,10 +42,10 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up JDK ${{ matrix.java-version }} - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.java-version }} distribution: 'zulu' From 14de6001ae5b104d96612f3d325260c3b9e6b2ad Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Fri, 28 Oct 2022 22:29:36 +0300 Subject: [PATCH 07/14] docs: add drakulavich as a contributor for code (#2198) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 18700ac9c8ba..cf94a7db008a 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2043,6 +2043,15 @@ "code", "doc" ] + }, + { + "login": "drakulavich", + "name": "Anton Yakutovich", + "avatar_url": "https://avatars.githubusercontent.com/u/129260?v=4", + "profile": "https://github.com/drakulavich", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 9663eb22da27..aa1e05f4cca5 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-224-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-225-orange.svg?style=flat-square)](#contributors-)
@@ -363,6 +363,9 @@ This project is licensed under the terms of the MIT license. Alan
Alan

๐ŸŒ JanFidor
JanFidor

๐Ÿ’ป ๐Ÿ“– + + Anton Yakutovich
Anton Yakutovich

๐Ÿ’ป + From daffaee03d1a76cd352939d29b054aa74bbfed0d Mon Sep 17 00:00:00 2001 From: steph88ss <111041594+steph88ss@users.noreply.github.com> Date: Sat, 29 Oct 2022 16:54:28 +1100 Subject: [PATCH 08/14] docs: Added Explanation for Reader-writer lock (#2129) --- reader-writer-lock/README.md | 230 ++++++++++++++++++++++++++++++++++- 1 file changed, 226 insertions(+), 4 deletions(-) diff --git a/reader-writer-lock/README.md b/reader-writer-lock/README.md index 317c6d5bb40e..142fe757e6df 100644 --- a/reader-writer-lock/README.md +++ b/reader-writer-lock/README.md @@ -8,20 +8,242 @@ tags: ## Intent -Suppose we have a shared memory area with the basic constraints detailed above. It is possible to protect the shared data behind a mutual exclusion mutex, in which case no two threads can access the data at the same time. However, this solution is suboptimal, because it is possible that a reader R1 might have the lock, and then another reader R2 requests access. It would be foolish for R2 to wait until R1 was done before starting its own read operation; instead, R2 should start right away. This is the motivation for the Reader Writer Lock pattern. +Regular lock does not distinguish the โ€˜read lockโ€™ and โ€˜write lockโ€™, as when access the data structure patterns +consists of many threads reading the data, each thread will have to lock it which produces unnecessary serialization. +The existence of reader-writer lock resolves this issue as it is well known as +โ€œmultiple concurrent readers, single writer locksโ€, used to consist of multiple threads reading the data concurrently +and allow only one thread to write or modify the data. All others (readers or writers) will be blocked while the writer +is modifying or writing the data and unblocked until the writer finishes writing. + +## Explanation + +Real world example + +> Consider if we obtain a database for bank accounts. If Alice wants to transfer from account1 to account2, at the +> same time Bob transfer money from account2 to account3. Alice will first read the totals of account1 and account2. Then, Bob's +> transaction executed completely. Alice is now working with outdated values, therefore, the total amount in account2 +> would be incorrect. With transactions, Bob would have to wait until Alice finishes her process of the accounts. + + + + +In plain words + +> Reader-writer lock enables either multiple readers or single writer to hold the lock at any given time. + + +Wikipedia says +> In computer science, a readersโ€“writer (single-writer lock, a multi-reader lock, a push lock, or an MRSW lock) +> is a synchronization primitive that solves one of the readersโ€“writers problems. + + +**Programmatic Example** + +In our programmatic example, we demonstrate the implementation of the access to either reader or writer. +We first create a `Reader` class which read when it acquired the read lock. It creates the reader and simulate the read operation. +```java +@Slf4j +public class Reader implements Runnable { + + private Lock readLock; + + private String name; + + private long readingTime; + + public Reader(String name, Lock readLock, long readingTime) { + this.name = name; + this.readLock = readLock; + this.readingTime = readingTime; + } + + public Reader(String name, Lock readLock) { + this(name, readLock, 250L); + } + + + @Override + public void run() { + readLock.lock(); + try { + read(); + } catch (InterruptedException e) { + LOGGER.info("InterruptedException when reading", e); + Thread.currentThread().interrupt(); + } finally { + readLock.unlock(); + } + } + + public void read() throws InterruptedException { + LOGGER.info("{} begin", name); + Thread.sleep(readingTime); + LOGGER.info("{} finish after reading {}ms", name, readingTime); + } +} + + +``` + + +In the `Writer` class, we operate write when it acquired the writer lock. It follows the similar process as the `Reader` class +which creates the writer and simulate the write operation. +```java + +public class Writer implements Runnable { + + private final Lock writeLock; + private final String name; + private final long writingTime; + + public Writer(String name, Lock writeLock) { + this(name, writeLock, 250L); + } + + public Writer(String name, Lock writeLock, long writingTime) { + this.name = name; + this.writeLock = writeLock; + this.writingTime = writingTime; + } + + @Override + public void run() { + writeLock.lock(); + try { + write(); + } catch (InterruptedException e) { + LOGGER.info("InterruptedException when writing", e); + Thread.currentThread().interrupt(); + } finally { + writeLock.unlock(); + } + } + + public void write() throws InterruptedException { + LOGGER.info("{} begin", name); + Thread.sleep(writingTime); + LOGGER.info("{} finished after writing {}ms", name, writingTime); + } +} + + + +``` + + +Now, in the `ReadWriteLock` class which would take the responsibilities to control the access for either the reader or the writer. +In the `ReadLock` class, it restricts that if there's no writer that gets the lock, then multiple readers could be access concurrently. +In the `WriteLock` class, it restricts that only one writer could be accessed. + +```java + +public class ReadWriteLock implements ReaderWriterLock { + + private final Object readerMutex = new Object(); + private int currentReaderCount; + + + private final Set globalMutex = new HashSet<>(); + private final ReadLock readerLock = new ReadLock(); + private final WriteLock writerLock = new WriteLock(); + + + public Lock readLock() { + return readerLock; + } + + public Lock writeLock() { + return writerLock; + } + + private boolean doesWriterOwnThisLock() { + return globalMutex.contains(writerLock); + } + + private boolean isLockFree() { + return globalMutex.isEmpty(); + } + + + private class ReadLock implements Lock { + + @Override + public void lock() { + synchronized (readerMutex) { + currentReaderCount++; + if (currentReaderCount == 1) { + acquireForReaders(); + } + } + } + + @Override + public void unlock() { + synchronized (readerMutex) { + currentReaderCount--; + + if (currentReaderCount == 0) { + synchronized (globalMutex) { + globalMutex.remove(this); + globalMutex.notifyAll(); + } + } + } + + } + } + + + private class WriteLock implements Lock { + + @Override + public void lock() { + synchronized (globalMutex) { + while (!isLockFree()) { + try { + globalMutex.wait(); + } catch (InterruptedException e) { + LOGGER.info("InterruptedException while waiting for globalMutex to begin writing", e); + Thread.currentThread().interrupt(); + } + } + globalMutex.add(this); + } + } + + @Override + public void unlock() { + synchronized (globalMutex) { + globalMutex.remove(this); + globalMutex.notifyAll(); + } + } + + } +} + + + + + +``` + ## Class diagram ![alt text](./etc/reader-writer-lock.png "Reader writer lock") ## Applicability -Application need to increase the performance of resource synchronize for multiple thread, in particularly there are mixed read/write operations. +Use the Reader-writer lock when: +* You need to increase the performance of resource synchronize for multiple thread, in particularly there are mixed read/write operations. +* In the bank transaction system, you want to ensure when two users are transacting the same account, one people will wait until the other finishes. + + -## Real world examples -* [Java Reader Writer Lock](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReadWriteLock.html) ## Credits * [Readersโ€“writer lock](https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock) * [Readersโ€“writers_problem](https://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem) + From 23441dab870ae6e3cd8aa86b2b13070396f42710 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Sat, 29 Oct 2022 08:55:43 +0300 Subject: [PATCH 09/14] docs: add steph88ss as a contributor for doc (#2204) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index cf94a7db008a..684c7b16509c 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2052,6 +2052,15 @@ "contributions": [ "code" ] + }, + { + "login": "steph88ss", + "name": "steph88ss", + "avatar_url": "https://avatars.githubusercontent.com/u/111041594?v=4", + "profile": "https://github.com/steph88ss", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index aa1e05f4cca5..a786ce410c50 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-225-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-226-orange.svg?style=flat-square)](#contributors-)
@@ -365,6 +365,7 @@ This project is licensed under the terms of the MIT license. Anton Yakutovich
Anton Yakutovich

๐Ÿ’ป + steph88ss
steph88ss

๐Ÿ“– From 97b2b6da71ccd547cad4aedb5c214b21dde89204 Mon Sep 17 00:00:00 2001 From: Yujan Ranjitkar <63731234+0xYujan@users.noreply.github.com> Date: Sat, 29 Oct 2022 12:03:02 +0545 Subject: [PATCH 10/14] translation: Add Nepali language localization support for the design patterns (#2136) --- README.md | 2 +- localization/np/README.md | 358 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 localization/np/README.md diff --git a/README.md b/README.md index a786ce410c50..6929235cdfb1 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@
-Read in different language : [**zh**](localization/zh/README.md), [**ko**](localization/ko/README.md), [**fr**](localization/fr/README.md), [**tr**](localization/tr/README.md), [**ar**](localization/ar/README.md), [**es**](localization/es/README.md), [**pt**](localization/pt/README.md), [**id**](localization/id/README.md), [**ru**](localization/ru/README.md), [**de**](localization/de/README.md), [**ja**](localization/ja/README.md), [**vi**](localization/vi/README.md), [**bn**](localization/bn/README.md) +Read in different language : [**zh**](localization/zh/README.md), [**ko**](localization/ko/README.md), [**fr**](localization/fr/README.md), [**tr**](localization/tr/README.md), [**ar**](localization/ar/README.md), [**es**](localization/es/README.md), [**pt**](localization/pt/README.md), [**id**](localization/id/README.md), [**ru**](localization/ru/README.md), [**de**](localization/de/README.md), [**ja**](localization/ja/README.md), [**vi**](localization/vi/README.md), [**bn**](localization/bn/README.md), [**np**](localization/np/README.md)
# Introduction diff --git a/localization/np/README.md b/localization/np/README.md new file mode 100644 index 000000000000..2a605f101671 --- /dev/null +++ b/localization/np/README.md @@ -0,0 +1,358 @@ + + +# เคœเคพเคญเคพเคฎเคพ เคฒเคพเค—เฅ‚ เค—เคฐเคฟเคเค•เฅ‹ เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพเคนเคฐเฅ‚ + +![Java CI](https://github.com/iluwatar/java-design-patterns/workflows/Java%20CI/badge.svg) +[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/iluwatar/java-design-patterns/master/LICENSE.md) +[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=ncloc)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) +[![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +[![All Contributors](https://img.shields.io/badge/all_contributors-218-orange.svg?style=flat-square)](#contributors-) + + +
+ +เคซเคฐเค• เคญเคพเคทเคพเคฎเคพ เคชเคขเฅเคจเฅเคนเฅ‹เคธเฅ : [**zh**](localization/zh/README.md), [**ko**](localization/ko/README.md), [**fr**](localization/fr/README.md), [**tr**](localization/tr/README.md), [**ar**](localization/ar/README.md), [**es**](localization/es/README.md), [**pt**](localization/pt/README.md), [**id**](localization/id/README.md), [**ru**](localization/ru/README.md), [**de**](localization/de/README.md), [**ja**](localization/ja/README.md), [**vi**](localization/vi/README.md), [**bn**](localization/bn/README.md), [**np**](localization/np/README.md) +
+ +# เคชเคฐเคฟเคšเคฏ + +เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพเคนเคฐเฅ‚ เคธเคฌเฅˆ เคญเคจเฅเคฆเคพ เคฐเคพเคฎเฅเคฐเฅ‹, เค”เคชเคšเคพเคฐเคฟเค• เค…เคญเฅเคฏเคพเคธเคนเคฐเฅ‚ เคนเฅเคจเฅ เคœเฅเคจ เคชเฅเคฐเฅ‹เค—เฅเคฐเคพเคฎเคฐเคฒเฅ‡ เค…เคจเฅเคชเฅเคฐเคฏเฅ‹เค— เคตเคพ เคชเฅเคฐเคฃเคพเคฒเฅ€ เคกเคฟเคœเคพเค‡เคจ เค—เคฐเฅเคฆเคพ เคธเคพเคฎเคพเคจเฅเคฏ เคธเคฎเคธเฅเคฏเคพเคนเคฐเฅ‚ เคธเคฎเคพเคงเคพเคจ เค—เคฐเฅเคจ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจ เคธเค•เฅเค›เฅค + +เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพเคนเคฐเฅ‚เคฒเฅ‡ เคชเคฐเฅ€เค•เฅเคทเคฃ, เคชเฅเคฐเคฎเคพเคฃเคฟเคค เคตเคฟเค•เคพเคธ เคชเฅเคฐเคคเคฟเคฎเคพเคจเคนเคฐเฅ‚ เคชเฅเคฐเคฆเคพเคจ เค—เคฐเฅ‡เคฐ เคตเคฟเค•เคพเคธ เคชเฅเคฐเค•เฅเคฐเคฟเคฏเคพเคฒเคพเคˆ เค—เคคเคฟ เคฆเคฟเคจ เคธเค•เฅเค›เฅค + +เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพเคนเคฐเฅ‚ เคชเฅเคจ: เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคจเคพเคฒเฅ‡ เคชเฅเคฐเคฎเฅเค– เคธเคฎเคธเฅเคฏเคพเคนเคฐเฅ‚ เคจเคฟเคฎเฅเคคเฅเคฏเคพเค‰เคจเฅ‡ เคธเฅ‚เค•เฅเคทเฅเคฎ เคธเคฎเคธเฅเคฏเคพเคนเคฐเฅ‚เคฒเคพเคˆ เคฐเฅ‹เค•เฅเคจ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเคฆเค›, เคฐ เคฏเคธเคฒเฅ‡ เคขเคพเคเคšเคพเคนเคฐเฅ‚เคธเคเค— เคชเคฐเคฟเคšเคฟเคค เคญเคเค•เคพ เค•เฅ‹เคกเคฐเคนเคฐเฅ‚ เคฐ เค†เคฐเฅเค•เคฟเคŸเฅ‡เค•เฅเคŸเคนเคฐเฅ‚เค•เฅ‹ เคฒเคพเค—เคฟ เค•เฅ‹เคก เคชเคขเฅเคจ เคฏเฅ‹เค—เฅเคฏเคคเคพเคฎเคพ เคชเคจเคฟ เคธเฅเคงเคพเคฐ เค—เคฐเฅเคฆเค›เฅค + +# เคธเฅเคฐเฅ เค—เคฐเฅเคฆเฅˆ + +เคฏเฅ‹ เคธเคพเค‡เคŸเคฒเฅ‡ เคœเคพเคญเคพ เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพเคนเคฐเฅ‚ เคชเฅเคฐเคฆเคฐเฅเคถเคจ เค—เคฐเฅเคฆเค›เฅค เคธเคฎเคพเคงเคพเคจเคนเคฐเฅ‚ เคฆเฅเคตเคพเคฐเคพ เคตเคฟเค•เคธเคฟเคค เค—เคฐเคฟเคเค•เฅ‹ เค› +เค–เฅเคฒเคพ เคธเฅเคฐเฅ‹เคค เคธเคฎเฅเคฆเคพเคฏเคฌเคพเคŸ เค…เคจเฅเคญเคตเฅ€ เคชเฅเคฐเฅ‹เค—เฅเคฐเคพเคฎเคฐเคนเคฐเฅ‚ เคฐ เค†เคฐเฅเค•เคฟเคŸเฅ‡เค•เฅเคŸเคนเคฐเฅ‚เฅค เคฆ +เคขเคพเคเคšเคพเคนเคฐเฅ‚ เคคเคฟเคจเฅ€เคนเคฐเฅ‚เค•เฅ‹ เค‰เคšเฅเคš-เคธเฅเคคเคฐเค•เฅ‹ เคตเคฟเคตเคฐเคฃเคนเคฐเฅ‚ เคตเคพ เคนเฅ‡เคฐเฅ‡เคฐ เคฌเฅเคฐเคพเค‰เคœ เค—เคฐเฅเคจ เคธเค•เคฟเคจเฅเค› +เคธเฅเคฐเฅ‹เคค เค•เฅ‹เคกเฅค เคธเฅเคฐเฅ‹เคค เค•เฅ‹เคก เค‰เคฆเคพเคนเคฐเคฃเคนเคฐเฅ‚ เคฐเคพเคฎเฅเคฐเคฐเฅ€ เคŸเคฟเคชเฅเคชเคฃเฅ€ เค—เคฐเคฟเคเค•เคพ เค›เคจเฅ เคฐ เคธเฅ‹เคšเฅเคจ เคธเค•เคฟเคจเฅเค› +เคเค• เคตเคฟเคถเคฟเคทเฅเคŸ เคขเคพเคเคšเคพ เค•เคธเคฐเฅ€ เค•เคพเคฐเฅเคฏเคพเคจเฅเคตเคฏเคจ เค—เคฐเฅเคจเฅ‡ เคฌเคพเคฐเฅ‡ เคชเฅเคฐเฅ‹เค—เฅเคฐเคพเคฎเคฟเค™ เคŸเฅเคฏเฅ‚เคŸเฅ‹เคฐเคฟเคฏเคฒเฅค เคนเคพเคฎเฅ€ เคธเคฌเฅˆเคญเคจเฅเคฆเคพ เคฌเคขเฅ€ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเค›เฅŒเค‚ +เคฒเฅ‹เค•เคชเฅเคฐเคฟเคฏ เคฏเฅเคฆเฅเคง เคธเคฟเคฆเฅเคง เค–เฅเคฒเคพ เคธเฅเคฐเฅ‹เคค เคœเคพเคญเคพ เคชเฅเคฐเคตเคฟเคงเคฟเคนเคฐเฅ‚เฅค + +เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคพเคฎเค—เฅเคฐเฅ€เคฎเคพ เคกเฅเคฌเฅเคจเฅ เค…เค˜เคฟ, เคคเคชเคพเคˆเค‚ เคตเคฟเคญเคฟเคจเฅเคจเคธเคเค— เคชเคฐเคฟเคšเคฟเคค เคนเฅเคจเฅเคชเคฐเฅเค› +[เคธเคซเฅเคŸเคตเฅ‡เคฏเคฐ เคกเคฟเคœเคพเค‡เคจ เคธเคฟเคฆเฅเคงเคพเคจเฅเคคเคนเคฐเฅ‚](https://java-design-patterns.com/principles/). + +เคธเคฌเฅˆ เคกเคฟเคœเคพเค‡เคจเคนเคฐเฅ‚ เคธเค•เฅ‡เคธเคฎเฅเคฎ เคธเคฐเคฒ เคนเฅเคจเฅเคชเคฐเฅเค›เฅค เคšเฅเคฎเฅเคฌเคจ, เคฏเคœเฅเคžเฅ€เคฌเคพเคŸ เคธเฅเคฐเฅ เค—เคฐเฅเคจเฅเคชเคฐเฅเค›, +เคฐ เคธเคฎเฅเคญเคตเคคเคƒ เคธเคฟเคฆเฅเคงเคพเคจเฅเคคเคนเคฐเฅ‚ เค•เคพเคฎ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅ‡ เคธเคพเคงเคพเคฐเคฃ เค•เฅเคฐเคพ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคœเคŸเคฟเคฒเคคเคพ เคฐ +เคขเคพเคเคšเคพเคนเคฐเฅ‚ เคฎเคพเคคเฅเคฐ เคชเฅ‡เคถ เค—เคฐเฅเคจเฅเคชเคฐเฅเค› เคœเคฌ เคคเคฟเคจเฅ€เคนเคฐเฅ‚ เคตเฅเคฏเคพเคตเคนเคพเคฐเคฟเค• เคฐเฅ‚เคชเคฎเคพ เค†เคตเคถเฅเคฏเค• เคนเฅเคจเฅเค›เคจเฅ +เคตเคฟเคธเฅเคคเคพเคฐเคถเฅ€เคฒเคคเคพเฅค + +เคเค•เคšเฅ‹เคŸเคฟ เคคเคชเคพเค‡เค เคฏเฅ€ เค…เคตเคงเคพเคฐเคฃเคพเคนเคฐเฅ‚เคธเคเค— เคชเคฐเคฟเคšเคฟเคค เคญเคเคชเค›เคฟ เคคเคชเคพเค‡เค เคฎเคพ เคกเฅเคฐเคฟเคฒ เค—เคฐเฅเคจ เคธเฅเคฐเฅ เค—เคฐเฅเคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเค› +[เค‰เคชเคฒเคฌเฅเคง เคกเคฟเคœเคพเค‡เคจ เคขเคพเคเคšเคพ](https://java-design-patterns.com/patterns/) เค•เฅเคจเฅˆ เคชเคจเคฟ เคฆเฅเคตเคพเคฐเคพ +เคจเคฟเคฎเฅเคจ เคฆเฅƒเคทเฅเคŸเคฟเค•เฅ‹เคฃเคนเคฐเฅ เค•เฅ‹ + +- เคจเคพเคฎ เคฆเฅเคตเคพเคฐเคพ เคเค• เคตเคฟเคถเคฟเคทเฅเคŸ เคขเคพเคเคšเคพ เค–เฅ‹เคœเฅเคจเฅเคนเฅ‹เคธเฅเฅค เคเค‰เคŸเคพ เคญเฅ‡เคŸเฅเคŸเคพเค‰เคจ เคธเค•เฅเคจเฅเคนเฅเคจเฅเคจ? เค•เฅƒเคชเคฏเคพ เคเค‰เคŸเคพ เคจเคฏเคพเค เคขเคพเคเคšเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ [เคฏเคนเคพเค](https://github.com/iluwatar/java-design-patterns/issues). +- `เคชเฅเคฐเคฆเคฐเฅเคถเคจ`, `Gang of Four`, เคตเคพ `เคกเฅ‡เคŸเคพ เคชเคนเฅเคเคš` เคœเคธเฅเคคเคพ เคŸเฅเคฏเคพเค—เคนเคฐเฅ‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคฆเฅˆเฅค +- เคขเคพเคเคšเคพ เค•เฅ‹เคŸเคฟเคนเคฐเฅ‚ เคชเฅเคฐเคฏเฅ‹เค— เค—เคฐเฅเคฆเฅˆ, `เคธเฅƒเคœเคจเคพเคคเฅเคฎเค•`, `เคตเฅเคฏเคตเคนเคพเคฐ`, เคฐ เค…เคจเฅเคฏเฅค + +เค†เคถเคพ เค›, เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคฏเคธ เคธเคพเค‡เคŸเคฎเคพ เคชเฅเคฐเคธเฅเคคเฅเคค เคตเคธเฅเคคเฅ-เค‰เคจเฅเคฎเฅเค– เคธเคฎเคพเคงเคพเคจเคนเคฐเฅ‚ เค‰เคชเคฏเฅ‹เค—เฅ€ เคชเคพเค‰เคจเฅเคนเฅเคจเฅ‡เค› +เคคเคชเคพเคˆเค‚เค•เฅ‹ เค†เคฐเฅเค•เคฟเคŸเฅ‡เค•เฅเคšเคฐเคฎเคพ เคฐ เคคเคฟเคจเฅ€เคนเคฐเฅ‚เคฒเคพเคˆ เคธเคฟเค•เฅเคจ เคงเฅ‡เคฐเฅˆ เคฐเคฎเคพเคˆเคฒเฅ‹ เค—เคฐเฅเคจเฅเคนเฅ‹เคธเฅ เคนเคพเคฎเฅ€เคฒเฅ‡ เคคเคฟเคจเฅ€เคนเคฐเฅ‚เคฒเคพเคˆ เคตเคฟเค•เคพเคธ เค—เคฐเฅเคฆเคพเฅค + +# เค•เคธเคฐเฅ€ เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจเฅ‡ +เคฏเคฆเคฟ เคคเคชเคพเคˆเค‚ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพเคฎเคพ โ€‹โ€‹เคฏเฅ‹เค—เคฆเคพเคจ เค—เคฐเฅเคจ เค‡เคšเฅเค›เฅเค• เคนเฅเคจเฅเคนเฅเคจเฅเค› เคญเคจเฅ‡ เคคเคชเคพเคˆเค‚เคฒเฅ‡ เคธเคพเคจเฅเคฆเคฐเฅเคญเคฟเค• เคœเคพเคจเค•เคพเคฐเฅ€ เคชเคพเค‰เคจเฅเคนเฅเคจเฅ‡เค› +เคนเคพเคฎเฅเคฐเฅ‹ [เคตเคฟเค•เคพเคธเค•เคฐเฅเคคเคพ เคตเคฟเค•เคฟ](https://github.com/iluwatar/java-design-patterns/wiki). เคนเคพเคฎเฅ€ เคฎเคฆเฅเคฆเคค เค—เคฐเฅเคจเฅ‡เค›เฅŒเค‚ +เคคเคชเคพเคˆเค‚ เคฐ [เค—เคฟเคŸเคฐ เคšเฅเคฏเคพเคŸเคฐเฅ‚เคฎ](https://gitter.im/iluwatar/java-design-patterns) เคฎเคพ เคคเคชเคพเคˆเค‚เค•เคพ เคชเฅเคฐเคถเฅเคจเคนเคฐเฅ‚เค•เฅ‹ เคœเคตเคพเคซ เคฆเคฟเคจเฅเคนเฅ‹เคธเฅเฅค + +# เค‡เคœเคพเคœเคคเคชเคคเฅเคฐ +เคฏเฅ‹ เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ MIT เคฒเคพเค‡เคธเฅ‡เคจเฅเคธ เค•เฅ‹ เคธเคฐเฅเคคเคนเคฐเฅ เค…เคจเฅเคคเคฐเฅเค—เคค เค‡เคœเคพเคœเคคเคชเคคเฅเคฐ เคฆเคฟเค‡เคเค•เฅ‹ เค›เฅค + +# เคฏเฅ‹เค—เคฆเคพเคจเค•เคฐเฅเคคเคพเคนเคฐเฅ‚ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ilkka Seppรคlรค
Ilkka Seppรคlรค

๐Ÿ“† ๐Ÿšง ๐Ÿ–‹
Subhrodip Mohanta
Subhrodip Mohanta

๐Ÿ’ป ๐Ÿ‘€ ๐Ÿšง
amit1307
amit1307

๐Ÿ’ป
Narendra Pathai
Narendra Pathai

๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€
Jeroen Meulemeester
Jeroen Meulemeester

๐Ÿ’ป
Joseph McCarthy
Joseph McCarthy

๐Ÿ’ป
Thomas
Thomas

๐Ÿ’ป
Anurag Agarwal
Anurag Agarwal

๐Ÿ’ป
Markus Moser
Markus Moser

๐ŸŽจ ๐Ÿ’ป ๐Ÿค”
Sabiq Ihab
Sabiq Ihab

๐Ÿ’ป
Amit Dixit
Amit Dixit

๐Ÿ’ป
Piyush Kailash Chaudhari
Piyush Kailash Chaudhari

๐Ÿ’ป
joshzambales
joshzambales

๐Ÿ’ป
Kamil Pietruszka
Kamil Pietruszka

๐Ÿ’ป
Zafar Khaydarov
Zafar Khaydarov

๐Ÿ’ป ๐Ÿ“–
Paul Campbell
Paul Campbell

๐Ÿ’ป
Argyro Sioziou
Argyro Sioziou

๐Ÿ’ป
TylerMcConville
TylerMcConville

๐Ÿ’ป
saksham93
saksham93

๐Ÿ’ป
nikhilbarar
nikhilbarar

๐Ÿ’ป
Colin But
Colin But

๐Ÿ’ป
Ruslan
Ruslan

๐Ÿ’ป
Juho Kang
Juho Kang

๐Ÿ’ป
Dheeraj Mummareddy
Dheeraj Mummareddy

๐Ÿ’ป
Bernardo Sulzbach
Bernardo Sulzbach

๐Ÿ’ป
Aleksandar Dudukovic
Aleksandar Dudukovic

๐Ÿ’ป
Yusuf AytaลŸ
Yusuf AytaลŸ

๐Ÿ’ป
Mihรกly Kuprivecz
Mihรกly Kuprivecz

๐Ÿ’ป
Stanislav Kapinus
Stanislav Kapinus

๐Ÿ’ป
GVSharma
GVSharma

๐Ÿ’ป
Srฤ‘an Paunoviฤ‡
Srฤ‘an Paunoviฤ‡

๐Ÿ’ป
Petros G. Sideris
Petros G. Sideris

๐Ÿ’ป
Pramod Gupta
Pramod Gupta

๐Ÿ‘€
Amarnath Chandana
Amarnath Chandana

๐Ÿ’ป
Anurag870
Anurag870

๐Ÿ’ป ๐Ÿ“–
Wes Gilleland
Wes Gilleland

๐Ÿ’ป
Harshraj Thakor
Harshraj Thakor

๐Ÿ’ป
Martin Vandenbussche
Martin Vandenbussche

๐Ÿ’ป
Alexandru Somai
Alexandru Somai

๐Ÿ’ป
Artur Mogozov
Artur Mogozov

๐Ÿ’ป
anthony
anthony

๐Ÿ’ป
Christian Cygnus
Christian Cygnus

๐Ÿ’ป
Dima Gubin
Dima Gubin

๐Ÿ’ป
Joshua Jimenez
Joshua Jimenez

๐Ÿ’ป
Kai Winter
Kai Winter

๐Ÿ’ป
lbroman
lbroman

๐Ÿ’ป
Przemek
Przemek

๐Ÿ’ป
Prafful Agarwal
Prafful Agarwal

๐Ÿ–‹
Sanket Panhale
Sanket Panhale

๐Ÿ–‹
staillebois
staillebois

๐Ÿ’ป
Krisztiรกn Nagy
Krisztiรกn Nagy

๐Ÿ’ป
Alexander Ivanov
Alexander Ivanov

๐Ÿ’ป
Yosfik Alqadri
Yosfik Alqadri

๐Ÿ’ป
Agustรญ Becerra Milร 
Agustรญ Becerra Milร 

๐Ÿ’ป
Juan Manuel Suรกrez
Juan Manuel Suรกrez

๐Ÿ’ป
Luigi Cortese
Luigi Cortese

๐Ÿ’ป
Katarzyna Rzepecka
Katarzyna Rzepecka

๐Ÿ’ป
adamski.pro
adamski.pro

๐Ÿ’ป
Shengli Bai
Shengli Bai

๐Ÿ’ป
Boris
Boris

๐Ÿ’ป
Dmitry Avershin
Dmitry Avershin

๐Ÿ’ป
้ณ้˜ณ
้ณ้˜ณ

๐Ÿ’ป
hoangnam2261
hoangnam2261

๐Ÿ’ป
Arpit Jain
Arpit Jain

๐Ÿ’ป
Jรณn Ingi Sveinbjรถrnsson
Jรณn Ingi Sveinbjรถrnsson

๐Ÿ’ป
Kirill Vlasov
Kirill Vlasov

๐Ÿ’ป
Mitchell Irvin
Mitchell Irvin

๐Ÿ’ป
Ranjeet
Ranjeet

๐Ÿ’ป
PhoenixYip
PhoenixYip

๐Ÿ’ป
M Saif Asif
M Saif Asif

๐Ÿ’ป
kanwarpreet25
kanwarpreet25

๐Ÿ’ป
Leon Mak
Leon Mak

๐Ÿ’ป
Per Wramdemark
Per Wramdemark

๐Ÿ’ป
Evan Sia Wai Suan
Evan Sia Wai Suan

๐Ÿ’ป
AnaghaSasikumar
AnaghaSasikumar

๐Ÿ’ป
Christoffer Hamberg
Christoffer Hamberg

๐Ÿ’ป
Dominik Gruntz
Dominik Gruntz

๐Ÿ’ป
Hannes
Hannes

๐Ÿ’ป
Leo Gutiรฉrrez Ramรญrez
Leo Gutiรฉrrez Ramรญrez

๐Ÿ’ป
Zhang WH
Zhang WH

๐Ÿ’ป
Christopher O'Connell
Christopher O'Connell

๐Ÿ’ป
George Mavroeidis
George Mavroeidis

๐Ÿ’ป
Hemant Bothra
Hemant Bothra

๐Ÿ’ป ๐ŸŽจ
Kevin Peters
Kevin Peters

๐Ÿ’ป
George Aristy
George Aristy

๐Ÿ’ป
Mahendran Mookkiah
Mahendran Mookkiah

๐Ÿ’ป
Azureyjt
Azureyjt

๐Ÿ’ป
gans
gans

๐Ÿ’ป
Matt
Matt

๐Ÿ–‹
Gopinath Langote
Gopinath Langote

๐Ÿ’ป
Hoswey
Hoswey

๐Ÿ’ป
Amit Pandey
Amit Pandey

๐Ÿ’ป
gwildor28
gwildor28

๐Ÿ–‹
็”ฐๆตฉ
็”ฐๆตฉ

๐Ÿ–‹
Stamatis Pitsios
Stamatis Pitsios

๐Ÿ’ป
qza
qza

๐Ÿ’ป
Rodolfo Forte
Rodolfo Forte

๐Ÿ–‹
Ankur Kaushal
Ankur Kaushal

๐Ÿ’ป
Ovidijus Okinskas
Ovidijus Okinskas

๐Ÿ’ป
Robert Kasperczyk
Robert Kasperczyk

๐Ÿ’ป
Tapio Rautonen
Tapio Rautonen

๐Ÿ’ป
Yuri Orlov
Yuri Orlov

๐Ÿ’ป
Varun Upadhyay
Varun Upadhyay

๐Ÿ’ป
Aditya Pal
Aditya Pal

๐Ÿ’ป
grzesiekkedzior
grzesiekkedzior

๐Ÿ’ป ๐Ÿ‘€
Sivasubramani M
Sivasubramani M

๐Ÿ’ป
Sami Airaksinen
Sami Airaksinen

๐Ÿ’ป
Janne Sinivirta
Janne Sinivirta

๐Ÿ’ป
Boris-Chengbiao Zhou
Boris-Chengbiao Zhou

๐Ÿ–‹
Jacob Hein
Jacob Hein

๐Ÿ–‹
Richard Jones
Richard Jones

๐Ÿ–‹
Rachel M. Carmena
Rachel M. Carmena

๐Ÿ–‹
Zaerald Denze Lungos
Zaerald Denze Lungos

๐Ÿ–‹
Lars Kappert
Lars Kappert

๐Ÿ–‹
Mike Liu
Mike Liu

๐ŸŒ
Matt Dolan
Matt Dolan

๐Ÿ’ป ๐Ÿ‘€
Manan
Manan

๐Ÿ‘€
Nishant Arora
Nishant Arora

๐Ÿ’ป
Peeyush
Peeyush

๐Ÿ’ป
Rakesh
Rakesh

๐Ÿ’ป ๐Ÿ‘€
Wei Seng
Wei Seng

๐Ÿ’ป
Ashish Trivedi
Ashish Trivedi

๐Ÿ’ป
ๆดชๆœˆ้˜ณ
ๆดชๆœˆ้˜ณ

๐Ÿ’ป
xdvrx1
xdvrx1

๐Ÿ‘€ ๐Ÿค”
Bethan Palmer
Bethan Palmer

๐Ÿ’ป
Toxic Dreamz
Toxic Dreamz

๐Ÿ’ป
Edy Cu Tjong
Edy Cu Tjong

๐Ÿ“–
Michaล‚ Krzywaล„ski
Michaล‚ Krzywaล„ski

๐Ÿ’ป
Stefan Birkner
Stefan Birkner

๐Ÿ’ป
Fedor Skvorcov
Fedor Skvorcov

๐Ÿ’ป
samilAyoub
samilAyoub

๐Ÿ’ป
Vladislav Golubinov
Vladislav Golubinov

๐Ÿ’ป
Swaraj
Swaraj

๐Ÿ’ป
Christoph Flick
Christoph Flick

๐Ÿ“–
Ascรชnio
Ascรชnio

๐Ÿ‘€
Domenico Sibilio
Domenico Sibilio

๐Ÿ“–
Akash Chandwani
Akash Chandwani

๐Ÿ‘€
Pavlo Manannikov
Pavlo Manannikov

๐Ÿ’ป
Eiman
Eiman

๐Ÿ’ป
Rocky
Rocky

๐Ÿ“–
Ibrahim ali abdelghany
Ibrahim ali abdelghany

๐Ÿ‘€
Girish Kulkarni
Girish Kulkarni

๐Ÿ“–
Omar Karazoun
Omar Karazoun

๐Ÿ’ป
Jeff Evans
Jeff Evans

๐Ÿ’ป
Vivek Singh
Vivek Singh

๐Ÿ’ป
siavash
siavash

๐Ÿ’ป
ruchpeanuts
ruchpeanuts

๐Ÿ“–
warp125
warp125

๐ŸŒ
KHADIR Tayeb
KHADIR Tayeb

๐ŸŒ
ignite1771
ignite1771

๐Ÿ’ป
Halil Demir
Halil Demir

๐ŸŒ
Rohit Singh
Rohit Singh

๐Ÿ’ป
byoungju94
byoungju94

๐Ÿ’ป
Moustafa Farhat
Moustafa Farhat

๐ŸŒ
Martel Richard
Martel Richard

๐Ÿ’ป
va1m
va1m

๐Ÿ’ป
Noam Greenshtain
Noam Greenshtain

๐Ÿ’ป
yonghong Xu
yonghong Xu

๐Ÿ“–
jinishavora
jinishavora

๐Ÿ‘€ ๐Ÿ’ป
Elvys Soares
Elvys Soares

๐Ÿ’ป
zWeBrain
zWeBrain

๐Ÿ’ป
ไฝ™ๆž—้ข–
ไฝ™ๆž—้ข–

๐ŸŒ
Alain
Alain

๐ŸŒ
VR
VR

๐Ÿ“–
JackieNim
JackieNim

๐Ÿ’ป
EdisonE3
EdisonE3

๐Ÿ’ป
Tao
Tao

๐Ÿ’ป
Juan Manuel Abate
Juan Manuel Abate

๐ŸŒ
Xenilo137
Xenilo137

๐Ÿ’ป
Samuel Souza
Samuel Souza

๐Ÿ’ป
Marlo Henrique
Marlo Henrique

๐ŸŒ
AndriyPyzh
AndriyPyzh

๐Ÿ’ป
karthikbhat13
karthikbhat13

๐Ÿ’ป
Morteza Adigozalpour
Morteza Adigozalpour

๐Ÿ’ป
Nagaraj Tantri
Nagaraj Tantri

๐Ÿ’ป
Francesco Scuccimarri
Francesco Scuccimarri

๐Ÿ’ป
Conny Hansson
Conny Hansson

๐Ÿ“–
Muklas Rahmanto
Muklas Rahmanto

๐ŸŒ
Vadim
Vadim

๐ŸŒ
Simran Keshri
Simran Keshri

๐Ÿ’ป
JCarlos
JCarlos

๐ŸŒ
Ali Ghasemi
Ali Ghasemi

๐Ÿ’ป
Carl Dea
Carl Dea

๐Ÿ’ป
Mozartus
Mozartus

๐ŸŒ
Manvi Goel
Manvi Goel

๐Ÿ“–
Anum Amin
Anum Amin

๐Ÿ“–
Reo Uehara
Reo Uehara

๐ŸŒ
Fiordy
Fiordy

๐Ÿ“–
Harshal
Harshal

๐Ÿ’ป
Abhinav Vashisth
Abhinav Vashisth

๐Ÿ“–
Kevin
Kevin

๐Ÿ‘€ ๐Ÿ’ป
Shrirang
Shrirang

๐Ÿ‘€ ๐Ÿ’ป
interactwithankush
interactwithankush

๐Ÿ’ป
CharlieYu
CharlieYu

๐Ÿ’ป
Leisterbecker
Leisterbecker

๐Ÿ’ป
DragonDreamer
DragonDreamer

๐Ÿ’ป
ShivanshCharak
ShivanshCharak

๐Ÿ’ป
HattoriHenzo
HattoriHenzo

๐Ÿ’ป
Arnab Sen
Arnab Sen

๐Ÿ’ป
MohanaRao SV
MohanaRao SV

๐Ÿ’ป
Yonatan Karp-Rudin
Yonatan Karp-Rudin

๐Ÿ’ป ๐Ÿ‘€
Oliani
Oliani

๐Ÿ’ป
Renjie LIU
Renjie LIU

๐Ÿ’ป
perfect guy
perfect guy

๐Ÿ“–
xyllq999
xyllq999

๐Ÿ’ป
Mohamed Bilal
Mohamed Bilal

๐Ÿ“–
Karshil sheth
Karshil sheth

๐Ÿ’ป
kongleong86
kongleong86

๐Ÿ’ป
Aitor Fidalgo Sรกnchez
Aitor Fidalgo Sรกnchez

๐ŸŒ ๐Ÿ“– ๐Ÿ‘€
Victor He
Victor He

๐Ÿ’ป
Minh Nguyen
Minh Nguyen

๐ŸŒ ๐Ÿ“–
yiichan
yiichan

๐Ÿ“–
Pan Sem
Pan Sem

๐Ÿ“–
zhoumengyks
zhoumengyks

๐Ÿ’ป
you
you

๐ŸŒ
Thanks
Thanks

๐ŸŒ
LazyProgrammer
LazyProgrammer

๐Ÿ“–
Mohammed Faizan Ahmed
Mohammed Faizan Ahmed

๐Ÿ“–
+ + + From 41d3490b97c250df000b1607e55af8ffee5233d5 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Sat, 29 Oct 2022 09:20:17 +0300 Subject: [PATCH 11/14] docs: add 0xYujan as a contributor for translation (#2205) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 684c7b16509c..44314f61f194 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2061,6 +2061,15 @@ "contributions": [ "doc" ] + }, + { + "login": "0xYujan", + "name": "Yujan Ranjitkar", + "avatar_url": "https://avatars.githubusercontent.com/u/63731234?v=4", + "profile": "http://yujanranjitkar.com.np", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 6929235cdfb1..1bba46487187 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-226-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-227-orange.svg?style=flat-square)](#contributors-)
@@ -366,6 +366,7 @@ This project is licensed under the terms of the MIT license. Anton Yakutovich
Anton Yakutovich

๐Ÿ’ป steph88ss
steph88ss

๐Ÿ“– + Yujan Ranjitkar
Yujan Ranjitkar

๐ŸŒ From aa68998d7160d06cb34b7c3b55fd1b79dfcc3a06 Mon Sep 17 00:00:00 2001 From: yusha-g <110189579+yusha-g@users.noreply.github.com> Date: Sat, 29 Oct 2022 12:00:33 +0530 Subject: [PATCH 12/14] Proofread ko/README.md (#2147) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit translation: Fixed wrong usage of particle in line 25. From ํŒจํ„ด์€ to ํŒจํ„ด์ด. --- localization/ko/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localization/ko/README.md b/localization/ko/README.md index 3a6212511ffe..4e057b17bf23 100644 --- a/localization/ko/README.md +++ b/localization/ko/README.md @@ -22,7 +22,7 @@ # ์‹œ์ž‘ํ•˜๊ธฐ -์ด ์‚ฌ์ดํŠธ๋Š” Java ๋””์ž์ธ ํŒจํ„ด์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์€ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฒฝํ—˜์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ์„ค๊ณ„์ž๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์€ ๋†’์€ ์ˆ˜์ค€์˜ ์„ค๋ช…์ด๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ์˜ˆ์ œ๋Š” ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฉฐ ํŠน์ • ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ† ๋ฆฌ์–ผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์•Œ๋ ค์ง€๊ณ  ์‹ค๋ฌด์—์„œ ์ž…์ฆ๋œ ์˜คํ”ˆ ์†Œ์Šค Java ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. +์ด ์‚ฌ์ดํŠธ๋Š” Java ๋””์ž์ธ ํŒจํ„ด์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์€ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฒฝํ—˜์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์™€ ์„ค๊ณ„์ž๊ฐ€ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์ด ๋†’์€ ์ˆ˜์ค€์˜ ์„ค๋ช…์ด๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ ์˜ˆ์ œ๋Š” ์ž˜ ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฉฐ ํŠน์ • ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠœํ† ๋ฆฌ์–ผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์•Œ๋ ค์ง€๊ณ  ์‹ค๋ฌด์—์„œ ์ž…์ฆ๋œ ์˜คํ”ˆ ์†Œ์Šค Java ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฃŒ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ๋‹ค์–‘ํ•œ [์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์›์น™](https://java-design-patterns.com/principles/)์„ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. From e4990df5816ca6c9f016e9a1414fe5d01f033183 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Sat, 29 Oct 2022 09:31:41 +0300 Subject: [PATCH 13/14] docs: add yusha-g as a contributor for translation (#2206) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 44314f61f194..60e9c7bad159 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -2070,6 +2070,15 @@ "contributions": [ "translation" ] + }, + { + "login": "yusha-g", + "name": "yusha-g", + "avatar_url": "https://avatars.githubusercontent.com/u/110189579?v=4", + "profile": "https://github.com/yusha-g", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 1bba46487187..704aa5e3f714 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=iluwatar_java-design-patterns&metric=coverage)](https://sonarcloud.io/dashboard?id=iluwatar_java-design-patterns) [![Join the chat at https://gitter.im/iluwatar/java-design-patterns](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/iluwatar/java-design-patterns?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![All Contributors](https://img.shields.io/badge/all_contributors-227-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-228-orange.svg?style=flat-square)](#contributors-)
@@ -367,6 +367,7 @@ This project is licensed under the terms of the MIT license. Anton Yakutovich
Anton Yakutovich

๐Ÿ’ป steph88ss
steph88ss

๐Ÿ“– Yujan Ranjitkar
Yujan Ranjitkar

๐ŸŒ + yusha-g
yusha-g

๐ŸŒ From f8a3d93f33b5c4150af4483db937ae7c05a2a545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilkka=20Sepp=C3=A4l=C3=A4?= Date: Sat, 29 Oct 2022 23:56:01 +0300 Subject: [PATCH 14/14] CI: Add stale bot configuration (#2270) --- .github/stale.yml | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000000..f756aa30a3d0 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,59 @@ +# Configuration for probot-stale - https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 30 + +# Number of days of inactivity before an Issue or Pull Request with the stale label is closed. +# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. +daysUntilClose: false + +# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) +onlyLabels: [] + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - "info: help wanted" + +# Set to true to ignore issues in a project (defaults to false) +exemptProjects: false + +# Set to true to ignore issues in a milestone (defaults to false) +exemptMilestones: false + +# Set to true to ignore issues with an assignee (defaults to false) +exemptAssignees: false + +# Label to use when marking as stale +staleLabel: "status: stale" + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when removing the stale label. +# unmarkComment: > +# Your comment here. + +# Comment to post when closing a stale Issue or Pull Request. +# closeComment: > +# Your comment here. + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 30 + +# Limit to only `issues` or `pulls` +# only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed \ No newline at end of file