[Spring] Factory를 통한 의존성 낮추기

2023. 10. 24. 17:04
728x90

factory를 통해 의존성을 낮춰보자! 

일단 간단한 프로젝트 살펴보기

1. MyRoom (main)

package dev.spring.step01dependency;

public class MyRoom {

	public static void main(String[] args) {
		// 새로 구매한 비디오 테이프를 테스트하기 위해 테이프 리더를 생성
		TapeReader reader = new TapeReader();
		
		//테스트 수행
		reader.test();
	}
}

2. Tape 

package dev.spring.step01dependency;

public class Tape {
	
	String name; //테이프 이름
	boolean isWorked; //정상 동작 여부
	
	public Tape(String name, boolean isWorked) {
		super();
		this.name = name;
		this.isWorked = isWorked;
	}

	public String getName() {
		return name;
	}

	public boolean isWorked() {
		return isWorked;
	}

}

3. TapeReader

package dev.spring.step01dependency;

public class TapeReader {
	Tape tape;// TapeReader -> (의존, dependent) Tape
	
	// 구매한 테이프가 정상 동작하는지 테스트
	public void test() {
		tape = new Tape("아일랜드", true);
		
		if (tape.isWorked) {
			System.out.println(tape.getName() + " 정상 동작합니다.");
		} else {
			System.out.println(tape.getName() + "당하셨습니다...");
		}
		
	}
}

TapeReader 클래스는  >> Tape 클래스에 의존하고 있다. 

 

이렇게 의존성이 있는 상황에서 

FACTORY를 사용해서 의존성을 낮춰보자. 어떻게 해야할까? 

MyRoom에서 new 연산자를 사용하지 않고,,,, TapeReader를 생성하고 싶다...

 

그 때 Factory 클래스를 따로 생성해보자.

4. TapeReaderFactory

package dev.spring.step02factory;

/*
 * TapeReader를 생성해주는 공장(factory)
 */

public class TapeReaderFactory {
	
	public static TapeReader createTapeReader() {
		return new TapeReader();
	}

}

> static 메소드로 만들어 어디서든 선언 가능하도록.

그리고 메인 클래스에서 Factory클래스의 createTapeReader 메소드를 가지고온다 

package dev.spring.step02factory;

public class MyRoom {

	public static void main(String[] args) {

		// 새로 구매한 비디오 테이프를 테스트하기 위해 테이프 리더를 생성
		TapeReader reader = TapeReaderFactory.createTapeReader();
		
		//테스트 수행
		reader.test();
	}
}

> 그러면 메인 메소드에서 new 연산자 없이도 ~~~~ 생성하고, 메소드도 사용 가능하게 된다. 

의존성이 낮아짐 !!!!!!

728x90

BELATED ARTICLES

more