Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- c3 second
- subporcess path
- CentOS7
- 백준
- 정규식 컴파일
- snmp
- regex_search
- gcc regex
- telegraf
- c++ 정규식
- c3 축 없애기
- centos pyhon 설치
- gcc 업데이트
- semanage
- c3 초
- python subprocess
- python popen
- c3 축 가리기
- c3 step graph
- snmp test
- g++ 업데이트
- python os
- 정규식 문자열 출력
- 정규식 활용
- InfluxDB
- selinux port 등록
- linux시간으로 변경
- influxdb 설치
- 1697
- grafana dashboard
Archives
- Today
- Total
리셋 되지 말자
스프링 없이 의존성 주입하기 2 - 속성을 통한 의존성 주입 본문
의사 코드
운전자가 타이어를 생산한다.
운전자가 자동차를 생산한다.
운전자가 자동차에 타이어를 장착한다.
앞의 코드의 문제점은 차를 만들고나면, 타이어를 교체 못하는다는 것이다.
Tire tire1 = new KoreaTier();
Car car1 = new Car(tire1);
현실적인 방법은, 차 주인이 타이어를 교체하고 싶을 때 교체할 수 있도록 하는것!
이를 구현하기 위해서는 생성자가 아닌 속성을 통한 의존성 주입이 필요
자바로 표현 - 속성 접근자 메서드 사용
Tire tire = new new KoreaTire();
Car car = new Car();
car.setTire(tire);
시퀀스 다이어그램
클래스 다이어그램
소스코드
- Car.java
package expert001_03;
public class Car {
Tire tire;
public Tire getTire() {
return tire;
}
public void setTire(Tire tire) {
this.tire = tire;
}
public String getTireBrand() {
return "장착된 타이어: " + tire.getBrand();
}
}
- Driver.java
package expert001_03;
public class Driver {
public static void main(String[] args) {
Tire tire = new KoreaTire();
Car car = new Car();
car.setTire(tire);
System.out.println(car.getTireBrand());
Tire tire2 = new AmericaTire();
car.setTire(tire2);
System.out.println(car.getTireBrand());
}
}
- 실행결과
장착된 타이어: 코리아 타이어
장착된 타이어: 아메리카 타이어
타이어를 바꾸기 위해 Car를 새롭게 만들지 않아도 됨.
- JUnit test 코드
package expert001_03;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class CarTest {
@Test
void 자동차_코리아타이어_장착_타이어브랜드_테스트() {
Tire tire1 = new KoreaTire();
Car car1 = new Car();
car1.setTire(tire1);
assertEquals("장착된 타이어: 코리아 타이어", car1.getTireBrand());
}
@Test
void 자동차_아메리카타이어_장착_타이어브랜드_테스트() {
Tire tire2 = new AmericaTire();
Car car2 = new Car();
car2.setTire(tire2);
assertEquals("장착된 타이어: 아메리카 타이어", car2.getTireBrand());
}
}
- 실행 결과
'Java(폐지) > spring 책' 카테고리의 다른 글
스프링을 통한 의존성 주입-스프링 설정 파일(XML)에서 속성 주입 (0) | 2020.08.12 |
---|---|
스프링을 통한 의존성 주입-XML 파일 사용 (0) | 2020.08.10 |
스프링 없이 의존성 주입하기 1 - 생성자를 통한 의존성 주입 (0) | 2020.08.06 |
코드 작성 (0) | 2020.08.06 |
IoC/DI - 제어의 역전/의존성 주입 (0) | 2020.08.06 |
Comments