리셋 되지 말자

코드 작성 본문

Java(폐지)/spring 책

코드 작성

kyeongjun-dev 2020. 8. 6. 13:40

스프링을 적용하지 않은 방식의 기존 자바 코드

  • 클래스 다이어그램

  • 시퀀스 다이어그램

소스 코드

  • Tire.java
package expert001_01;

public interface Tire {
    String getBrand();
}
  • KoreaTire.java
package expert001_01;

public class KoreaTire implements Tire {
    public String getBrand() {
        return "코리아 타이어";
    }
}
  • AmericaTire.java
package expert001_01;

public class AmericaTire implements Tire{
    public String getBrand() {
        return "미국 타이어";
    }
}
  • Car.java
package expert001_01;

public class Car {
    Tire tire;

    public Car() {
        tire = new KoreaTire();
        // tire = new AmeriacTire();
    }

    public String getTireBrand() {
        return "장착된 타이어: " + tire.getBrand();
    }
}
  • Driver.java (main)
package expert001_01;

public class Driver {
    public static void main(String[] args) {
        Car car = new Car();
        System.out.println(car.getTireBrand());
    }
}
  • 실행 결과
장착된 타이어: 코리아 타이어

JUnit test 코드

  • /src/test/java/expert001_01/CarTest.java
package expert001_01;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class CarTest {

    @Test
    void 자동차_장착_타이어브랜드_테스트() {
        //fail("Not yet implemented");
        Car car = new Car();

        assertEquals("장착된 타이어: 코리아 타이어", car.getTireBrand());
    }


}
  • 실행 결과

정리


  • 자동차는 타이어에 의존한다.
  • 운전자는 자동차를 사용한다.
  • 운전자가 자동차에 의존한다고 봐도 된다.
  • 자동차의 생성자 코드에서 tire 속성에 새로운 타이어를 생성해서 참조할 수 있게 했다.
Comments