Java

SOLID 원칙

훈지런 2022. 6. 2. 22:09

solid 원칙...

오늘 면접을 봤는데.. 분명 알던거였는데... 많이 찾아보고 공부했던건데...

왜 기억이 안나느냐~ 이말이야...

 

그런 의미로 정리해보기로했다.

 

단일 책임 원칙 (Single Responsiblity Principle)

개방 폐쇄 원칙 (Open Closed Principle)

리스코프 치환 원칙 (Liskov Substitution Principle)

인터페이스 분리 원칙 (Interface Segregation Principle)

의존 역전 원칙 (Dependency Inversion Principle)

 

앞자를 따서 solid 원칙이라고한다 하나씩 정리..를.. 해보까나

 

단일 책임 원칙 (Single Responsiblity Principle)

하나의 클래스는 하나의 책임만 지어야한다. 그럼 여기서 책임이란?
기능 혹은 역할이라고 봐도 무방한듯하다.
여러기능을 가지고있는 클래스라고한다면 아마 다른 클래스와의 결합력이 강해질것이고, 그로인해 수정이 어려워질것이다.
자동차를 한 클래스에 기능을 모두 우겨넣는다기보다 엔진이면 엔진, 바퀴면 바퀴, 의자면 의자 책임, 역할을 분리하여 관리하는것을 만한다.

개방 폐쇄 원칙 (Open Closed Principle)

기능 확장에는 열려있고 수정에는 닫혀있어야 한다. 그러니까 기존코드는 만지지 않고 기능을 추가한다는 말이다.
예를들면 인터페이스를 상속받아 사용하며 필요시 사용 인터페이스를 상속받은 클래스만 추가하여 사용하는것을 말하는것으로 보인다.
전략패턴과 JDBC가 좋은 예라고 한다. 디비를 교체해도 단 몇줄, 몇개의 코드만 바꾸면 바로 교체가 되기때문에..
전략패턴은 다음에 정리해야겠다.

리스코프 치환 원칙 (Liskov Substitution Principle)

얘는 이름만으론 감이 안온다.
이게 뭐인고 하니... 자식 클래스는 부모 클래스를 대신할수있어야한다... 그러니까 부모클래스가 있어야 할 자리에 자식클래스가 들어가도 문제가 없어야한다~이말씀같다.
그러니까 부모의 역할과 책임을 무시한체 상속하면서 기능추가만 하는게 아니고 부모 클래스의 의도에 맞는 오버라이팅 즉 올바른 상속과 구현을 하면된다~이거같다.

인터페이스 분리 원칙 (Interface Segregation Principle)

하나의 클래스는 자신이 사용하지않는 인터페이스는 규현하지 말아야한다. 즉 하나의 인터페이스에 여러개의 기능을 나열하지말고 나눠쓰라는걸로 보인다. 따라서 사용하지않는 인터페이스가 변경한다고해서 영향을 받으면 안되니까 쓰지않는 인터페이스는 사용하지 않아야 한다. 난 단일 책임 원칙이랑 원칙적으론 같은말아닌가 싶다..

의존 역전 원칙 (Dependency Inversion Principle)

결국 개발 폐쇄 원칙이랑 연장선이지 않나 싶은데, 구체화된 클래스보단 추상클래스나 인터페이스에 의존해야한다는 말이다.

'Java' 카테고리의 다른 글

클래스, 객체, 인스턴스  (0) 2022.10.06
Map  (0) 2022.06.14
배열, List  (0) 2022.06.11
자바 메모리구조 아주 간략하게  (0) 2022.06.03
hashcode와 String 의equals 함수  (0) 2022.06.02