• 나중에 c로 대체도 가능하게 하기
    달라져야하는 부분에 대해서는 설정파일로 빼놓는것
  • B b = new B(); 를 어떤것이든 대체하고싶다는것이다.

외부파일로 가져와야한다.

Program

package part3.ex06.인터페이스;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException, InstantiationException, IllegalAccessException, ClassNotFoundException {
		FileInputStream fis = new FileInputStream("src/part3/ex06/인터페이스/setting.txt");
		Scanner s=new Scanner(fis);
		String className=s.nextLine();
		s.close();
		fis.close();
		
		Class clazz =Class.forName(className);
		A a = new A();
		X x = (X) clazz.newInstance();
		a.setX(x);
		
		a.print();  
	}

}

setting.txt 파일을 만들었다.

part3.ex06.인터페이스.B

B

package part3.ex06.인터페이스;

public class B implements X {

	public int total() {
		return 30;
	}

}

30

이제 C 클래스를 만들어서 대체가 잘되는지 확인해보자.

C

package part3.ex06.인터페이스;

public class C implements X{

	@Override
	public int total() {
		return 50;
	}
}

50을 찍어보겠다. setting.txt 파일에서 C로 바꾼후 출력해보자.

50

댓글남기기