누더기지만 예쁜 내새끼 코드말고
나중에는 Spring DI를 자유자재로 고민하고 설계하고 구현하는
개발자가 되고싶다
재밌다!!!!!!
-Map 방식: (key,value)값을 (String,Object)타입으로 저장
-Propertise: (key,value)값을 (String,String)타입으로 저장
-Propertise의 load()메서드 파일 읽어오기에 용이
package com.fastcampus.ch3.diCopy1;
import java.io.FileReader;
import java.util.Objects;
import java.util.Properties;
class Car{ }
class SportsCar extends Car{}
class Truck extends Car{}
// ** Car 조상 클래스를 상속받는 하위 클래스들 3개
class Engine{}
// ** 덩그러니 엔진 클래스
public class Main1 {
public static void main(String[] args) throws Exception{
Engine engine = (Engine) getObject("engine");
// ** 엔진 객체 생성, getObject() 메서드를 따로 빼서 설계하여 유연성 증대
// ** Object타입으로 설정하여 형변환하여 다른 타입과 유연성 증대
System.out.println("engine = " + engine);
}
//** getObject() 메서드 따로 빼내어 만듦
// Object타입으로 선언하여 유연성 증대 (Car가 오든~ , Engine이 오든~ 모두 사용 가능)
static Object getObject(String key) throws Exception{
Properties p = new Properties();
// ** Propertise객체 생성
p.load((new FileReader("config.txt")));
// ** Propertise의 .load()메서드로 "config.txt"의 파일정보 읽어와 저장
Class clazz = Class.forName(p.getProperty(key));
// ** Class객체 이용하여 config.txt파일의 이름 불러옴
// ** Propertise 객체에 저장되어 있는 key값 (ex: car,engine 이용하여 찾아옴)
return clazz.newInstance();
// ** 결과값 객체로 반환
}
}
<config.txt>
car=com.fastcampus.ch3.diCopy1.SportsCar
engine=com.fastcampus.ch3.diCopy1.Engine
-여러 데이터타입간 상호 유연성 증대
-코드 수정 시 config.txt내용만 수정하면 되므로 보수용이
-객체지향 프로그래밍의 장점