5. 그 외 공부/5.3 CS 공부
220803_CS공부_DIP (의존 역전 원칙)
마느링
2022. 8. 3. 12:21
김영한님 스프링 강의를 듣는데 김영한님께서 자주 하시는 말씀이 코드를 짤때는 '역할과 구현'이 구분되어야 한다
라는 말씀을 자주 하셨다
클라이언트 클래스가 구현체에 의존하게 되면 dip 원칙에 위반된다 라는 말씀을 하셔서 한번 정리해보았다.
구상한 코드는 하기와 같다
빨간색 옷, 파란색 옷이 있으며 어떤것을 입을지 정해져있지 않은 상황.
색상이라는 공통 분모를 인터페이스로 설정하였다.
public interface Color {
public String setColor();
}
public class Blue implements Color {
String colorName;
Blue(String colorName){
this.colorName = colorName;
}
@Override
public String setColor() {
return colorName;
}
}
public class Red implements Color {
String colorName;
Red(String colorName){
this.colorName = colorName;
}
@Override
public String setColor() {
return colorName;
}
}
public class Cloth {
public void wear(Color color){
System.out.println("["+color.setColor()+"색] 옷을 입고있습니다.");
}
}
public class Test {
public static void main(String[] args) {
Cloth cloth1 = new Cloth();
Color blue = new Blue("파랑");
Color red = new Red("빨강");
cloth1.wear(blue);
cloth1.wear(blue);
}
}
이렇게 DIP 원칙을 지키는 이유가 코드의 재사용성, 유지보수성이 높아지기 때문에 DIP 원칙을 지켜야한다 라는걸 깨달았다
나도 종종 코드를 짤때 구현체에 의존하게끔 코드를 구상했는데 앞으로는 추상화에 의존하도록 코드를 작성해보아야겠다^^...