[ Spring ] IOC (Inversion of Control) - 디자인 패턴(Factory) 활용

2022. 4. 1. 16:38Spring

< 사용 코드 >

 

[ Spring ] IOC (Inversion of Control) - 인터페이스 활용

1. TV라는 인터페이스를 생성하여 강제성을 부여해준다. package test; public interface TV { public void powerOn(); public void powerOff(); public void volumeUp(); public void volumeDown(); } 2. TV를 i..

daunee.tistory.com

 

 

 

 


 

 


디자인 패턴을 사용하는 이유


- 다양한 목적의 재사용성이 용이한 코드를 설계하기 위해 사용

- 재사용을 통한 개발 시간 단축

- 개발자들의 원활한 협업이 가능

- 소프트웨어의 구조를 파악하기 용이

 

 

· 팩토리 메소드 패턴(Factory Method Pattern)

사용 목적 특징
- 객체 생성을 캡슐화하여 결합을 약화 시기키 위해 사용 
 - 비슷한 유형의 객체를 인터페이스 하나로 관리할 수 있다.

 - 개발자들의 원활한 협업이 가능하다.

 - 비슷한 유형의 객체가 생성되어도 implement를 통해
    쉽게 추가할 수 있다.

 


 

1. BeanFactory.class를 생성한다.

 

package test;

public class BeanFactory {

	public Object getBean(String beanName) {
		
		if(beanName.equals("lg")) {
			return new LgTV();
		}else if(beanName.equals("samsung")) {
			return new SamsungTV();
		}else {
			return null;
		}
		
	}
}

 

 

- 객체 생성 로직을 캡슐화 할 메서드이며, 설정 정보 역할을 한다.

메서드에 사용할 bean이름을 인자로 주면, 해당 bean에 맞는 로직을 수행하게 된다.

 

 

 

2. Client.class를 생성한다.

 

BeanFactory factory=new BeanFactory();

TV tv= (TV)factory.getBean(args[0]);// 다운캐스팅 필요
tv.powerOn();
tv.volumeUp();
tv.powerOff();

 

- new 라는 코드가 캡슐화 되어있어 개발자가 객체 생성을 직접하지 않고 컨테이너가 하게 된다.

 

 

 

3. arguments (아규먼트)를 직접 작성하여 결과를 확인할 수 있다.

 

 

 

- 상단에 Run  Run Configurations → Apache Tomcat → (x)=Arguments로 들어간 후,

 Program arguments에 samsung or lg를 적어주면 결과를 확인할 수 있다.