치밥좋다
30
2021-11-24 14:41:00 작성 2021-11-24 14:41:30 수정됨
2
169

OCP , DIP 차이


안녕하세요 솔리드 공부를 하던 도중에 궁금한점이 생겨서 질문 드려봅니다.


OCP: 확장에는 열리고, 변화는 닫혀야한다.

DIP: 구체적인 것이 추상화된곳에 의존해야한다. 추상화된것이 구체적인 것에 의존하면 안된다.


예를들면 자동차,타이어가 있다고 가정하겠습니다.

OCP를 적용하면 자동차 -> 타이어(interface) ->일반타이어 -> 스노우타이어

이렇게 상위클래스나,인터페이스를 중간에 둠으로써 어떤 객체가 생기더라도 자동차에는 영향이 없는거라고 알고있습니다.

 DIP를 적용하면  똑같이 추상화된  타이어(interface)를 두고 일반타이어 -> 스노우타이어 둠으로써 

어떤 객체가 생기더라도 자동차에 영향이 없다.


이렇게 제가 이해한게 맞을까요??

그리고 2개 이론이 같다고 느껴지고 있습니다. 차이점이 있을까요??

0
  • 답변 2

  • 꿈의연봉1800
    354
    2021-11-24 14:45:41

    말씀하신건 LSP에 가깝습니다

  • fender
    24k
    2021-11-24 14:51:05

    OCP는 제시하신 예제에 빗대어 보면, 타이어 클래스를 만들 때 나중에 이를 '확장'한 스노우타이어라는 개념이 생기더라도 타이어의 소스를 고칠 필요가 없게 설계하라는 뜻입니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.