더북(TheBook)

예제 3-2는 2장의 SearchEngine 구현체를 보여준다. MySearchEngine은 많은 코드와 데이터를 클래스 안에 포함한다. 달리 말하면, 각 문서와 그 유형을 손수 추가하고 있다. 그럼 더 많은 문서 유형이나 메서드를 추가하고 싶은 경우에는 어떻게 될까? 새로운 변경이 생길 때마다 반복해서 편집하고 다시 컴파일해야 한다. 결국 너무 많은 수고가 든다!

 예제 3-2 MySearchEngine.java

package com.apress.isf.java.service;

 

import java.util.ArrayList;

import java.util.List;

 

import com.apress.isf.java.model.Document;

import com.apress.isf.java.model.Type;

import com.apress.isf.java.service.SearchEngine;

 

public class MySearchEngine implements SearchEngine {

 

@Override

public List<Document> findByType(Type documentType) {

List<Document> result = new ArrayList<Document>();

for (Document document : storage()) {

if (document.getType().getName().equals(documentType.getName()))

result.add(document);

}

return result;

}

 

@Override

public List<Document> listAll() {

return storage();

}

 

private List<Document> storage() {

List<Document> result = new ArrayList<Document>();

 

Type type = new Type();

type.setName("PDF");

type.setDesc("Portable Document Format");

type.setExtension(".pdf");

 

Document document = new Document();

document.setName("Book Template");

document.setType(type);

document.setLocation("/Users/felipeg/Documents/Random/Book Template.pdf");

 

result.add(document);

 

document = new Document();

document.setName("Sample Contract");

document.setType(type);

document.setLocation(

"/Users/felipeg/Documents/Contracts/Sample Contract.pdf");

 

result.add(document);

 

type = new Type();

type.setName("NOTE");

type.setDesc("Text Notes");

type.setExtension(".txt");

 

document = new Document();

document.setName("Clustering with RabbitMQ");

document.setType(type);

document.setLocation(

"/Users/felipeg/Documents/Random/Clustering with RabbitMQ.txt");

 

result.add(document);

 

type = new Type();

type.setName("WEB");

type.setDesc("Web Link");

type.setExtension(".url");

 

document = new Document();

document.setName("Pro Spring Security Book");

document.setType(type);

document.setLocation("http://www.apress.com/9781430248187");

 

result.add(document);

 

return result;

}

 

}


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.