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