서비스 객체의 메소드를 등록, 검색 객체가 부르는 방식
등록, 검색 객체가 서비스 객체의 주소값을 가지고 있음
상속, 구현 구조:
foodstoreservice-->foodStoreServiceUI
task-->abstractUI-->searchNearStoreUI
등록, 검색 객체는 MakeInstance 객체를 통해 서비스 객체의 태스크맵에 저장됨
MakeInstance객체는 등록 객체 등을 만든 후 불러오기 위해 txt 파일이 필요
package org.thinker.fs;
import java.util.Map;
import java.util.Scanner;
public class FoodStoreUI {
private FoodStoreService service;
private Scanner scanner;
private Map<String, Task> taskMap;
public FoodStoreUI(FoodStoreService service)throws Exception {
super();
this.service = service;
this.scanner = new Scanner(System.in);
this.taskMap = MakeInstance.loadTask("C:\\zzz\\store.txt", service);
}
public void execute(){
System.out.println("TaskName ");
String taskName = scanner.nextLine();
Task task = taskMap.get(taskName);
try {
task.doJob();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
execute();
}
}
---------------------------------------------------------------------------------------------
package org.thinker.fs;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public class MakeInstance {
public static Map<String, Task> loadTask(String fileName, FoodStoreService service) throws Exception {
Map<String, Task> taskMap = new HashMap<String, Task>();
Properties prop = new Properties();
prop.load(new FileInputStream(fileName));
Iterator names = prop.keySet().iterator();
while(names.hasNext()){
String key = (String)names.next();
String value = (String)prop.get(key);
System.out.println(key +":" + value);
Task obj = (Task)Class.forName(value).newInstance();
obj.setService(service);
taskMap.put(key, obj);
}
return taskMap;
}
}
---------------------------------------------------------------------------------------------
package org.thinker.fs;
import java.util.List;
public interface FoodStoreService {
public void regist(FoodStoreVO vo)throws Exception;
public FoodStoreVO findByName(String name)throws Exception;
public List<FoodStoreVO> findNearStores(Location currentPos)throws Exception;
}
package org.thinker.fs;
import java.util.List;
public class FoodStoreServiceImpl implements FoodStoreService {
private FoodStoreDAO dao;
@Override
public void regist(FoodStoreVO vo) throws Exception {
// TODO Auto-generated method stub
dao.instance.saveData(null);
}
@Override
public FoodStoreVO findByName(String name) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public List<FoodStoreVO> findNearStores(Location currentPos)
throws Exception {
// TODO Auto-generated method stub
return null;
}
}
---------------------------------------------------------------------------------------------
package org.thinker.fs;
public interface Task {
public void setService(FoodStoreService service);
public void doJob()throws Exception;
}
package org.thinker.fs;
import java.util.Scanner;
public abstract class AbstractUI implements Task{
protected FoodStoreService service;
protected Scanner scanner;
public AbstractUI() {
super();
this.scanner = new Scanner(System.in);
}
@Override
public void setService(FoodStoreService service) {
this.service = service;
}
}
package org.thinker.fs;
public class RegistStoreUI extends AbstractUI {
@Override
public void doJob() throws Exception {
System.out.println("가게이름 ");
String name = scanner.nextLine();
}
}
package org.thinker.fs;
public class SearchNearStoreUI extends AbstractUI {
@Override
public void doJob() throws Exception {
System.out.println("Search.....");
}
}
---------------------------------------------------------------------------------------------
store.txt
NEAR=org.thinker.fs.SearchNearStoreUI
REGIST=org.thinker.fs.RegistStoreUI
'코딩 > JAVA' 카테고리의 다른 글
(3) Java 자바 Mp3 파일 전송 서버 및 Key Annotation 예제 (Mp3Client) (0) | 2014.09.13 |
---|---|
(2) Java 자바 파일 복사 전용 함수(CopyUtil) (0) | 2014.09.13 |
(1) Java 자바 Template Method Pattern - ClientAgent (0) | 2014.09.13 |
Java 자바 DataInputStream & DataOutputStream 간단한 예제 (0) | 2014.09.13 |
Java 자바 FileInputStream & FileOutputStream 예제(중개서버 경유 방식) (0) | 2014.09.12 |