From dceb8699e51cabb630ea7d97092542aaaa37f056 Mon Sep 17 00:00:00 2001 From: daadaadaah Date: Mon, 13 Mar 2023 11:39:00 +0900 Subject: [PATCH] Adapter Pattern --- .../design-pattern/adapterPattern/README.md | 1 + .../adapterPattern/SearchService.java | 5 ++++ .../SearchServiceTolrAdapter.java | 26 +++++++++++++++++++ .../SearchServiceTolrAdapter2.java | 25 ++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 oop-in-spring/practice/design-pattern/adapterPattern/README.md create mode 100644 oop-in-spring/practice/design-pattern/adapterPattern/SearchService.java create mode 100644 oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter.java create mode 100644 oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter2.java diff --git a/oop-in-spring/practice/design-pattern/adapterPattern/README.md b/oop-in-spring/practice/design-pattern/adapterPattern/README.md new file mode 100644 index 000000000..cf059d49b --- /dev/null +++ b/oop-in-spring/practice/design-pattern/adapterPattern/README.md @@ -0,0 +1 @@ +# 어댑터 패턴 diff --git a/oop-in-spring/practice/design-pattern/adapterPattern/SearchService.java b/oop-in-spring/practice/design-pattern/adapterPattern/SearchService.java new file mode 100644 index 000000000..1820a9699 --- /dev/null +++ b/oop-in-spring/practice/design-pattern/adapterPattern/SearchService.java @@ -0,0 +1,5 @@ +package adapterPattern; + +public interface SearchService { + SearchResult search(String keyword); +} diff --git a/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter.java b/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter.java new file mode 100644 index 000000000..aac96a4aa --- /dev/null +++ b/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter.java @@ -0,0 +1,26 @@ +import adapterPattern.SearchService; + +public class SearchServiceTolrAdapter implements SearchService { + private TolrClient tolrClient = new TolrClient(); + + @Override + public SearchResult search(String keyword) { + // keyword를 tolrClient가 요구하는 형식으로 변환 + TolrQuery tolrQuery = new TolrQuery(keyword); + + // TolrClient 기능 실행 + QueryResponse response = tolrClient.query(tolrQuery); + + SearchResult result = convertToResult(response); + return result; + } + + private SearchResult convertToResult(QueryResponse response) { + List tolrDocs = response.getDocumentList().getDocuments(); + List docs = new ArrayList(); + for(TolrDocument tolrDoc: tolrDocs) { + docs.add(new SearchDocument(tolrDocs.getId(), ...)); + } + return new SearchResult(docs); + } +} \ No newline at end of file diff --git a/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter2.java b/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter2.java new file mode 100644 index 000000000..7b6d7db1e --- /dev/null +++ b/oop-in-spring/practice/design-pattern/adapterPattern/SearchServiceTolrAdapter2.java @@ -0,0 +1,25 @@ +package adapterPattern; + +public class SearchServiceTolrAdapter2 extends TolrClient { + + public SearchResult search(String keyword) { + // keyword를 tolrClient가 요구하는 형식으로 변환 + TolrQuery tolrQuery = new TolrQuery(keyword); + + // TolrClient 기능 실행 + QueryResponse response = super.query(tolrQuery); + + // TolrClient의 결과를 SearchResult로 변환 + SearchResult result = convertToResult(response); + return result; + } + + private SearchResult convertToResult(QueryResponse response) { + List tolrDocs = response.getDocumentList().getDocuments(); + List docs = new ArrayList(); + for(TolrDocument tolrDoc: tolrDocs) { + docs.add(new SearchDocument(tolrDocs.getId(), ...)); + } + return new SearchResult(docs); + } +} \ No newline at end of file