[ Spring ] IOC (Inversion of Control) - 디자인 패턴(Factory) 활용
2022. 4. 1. 16:38ㆍSpring
< 사용 코드 >
[ 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를 적어주면 결과를 확인할 수 있다.
'Spring' 카테고리의 다른 글
[ Spring ] AOP ( Aspect Oriented Programming ) - excepObj를 통하여 반환된 예외 확인하기 (0) | 2022.04.07 |
---|---|
[ Spring ] AOP ( Aspect Oriented Programming ) - 핵심 관심 호출하기 ( 사용된 인자와 메서드명, 반환 값 확인 하기 ) (0) | 2022.04.07 |
[ Spring ] AOP ( Aspect Oriented Programming ) - 관점 지향 프로그래밍 | 로그 작성하기 (0) | 2022.04.04 |
[ Spring ] IOC (Inversion of Control) - 인터페이스 활용 (0) | 2022.04.01 |
[ Spring ] 스프링 프레임워크의 특징 (0) | 2022.03.29 |