changddao.log
로그인
changddao.log
로그인
좋은 객체지향 설계 원칙 SOLID
changho Youn
·
2023년 11월 23일
팔로우
0
Backend
Spring
SOLID🐦
SRP : 단일 책임 원칙(single responsibility principle)
OCP : 개방-폐쇄 원칙(Open/closed principle)
LSP : 리스코프 치환 원칙(Liskov substitution principle)
ISP : 인터페이스 분리 원칙(Interface segregation principle)
DIP: 의존관계 역전 원칙 (Dependency inversion principle)
SRP 단일 책임 원칙🐳
한 클래스는 하나의 책임만 가져야 한다.
하나의 책임이라는 것은 모호하다.
->클 수 있고, 작을 수 있다.
-> 문맥과 상황에 따라 다르다.
중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것
ex) UI 변경, 객체의 생성과 사용을 분리
OCP 개방-폐쇄 원칙
구현 객체를 변경하려면 클라이언트 코드를 변경해야 한다.
분명 다형성을 사용했지만 OCP원칙을 지킬 수 없다.
-> 이 문제를 해결하기 위해서는 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요하다.
-> 이 역할을 Spring이 할 수 있게끔 해준다.
LSP 리스코프 치환 원칙
프로그램의 객체는 프로그램의 정확성을 깨드리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.
다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위한 원칙, 인터페이스를 구현한 구현체는 믿고 사용하려면, 이 원칙이 필요하다.
단순히 컴파일에 성공하는 것을 넘어서는 이야기
예) 자동차 인터페이스의 엑셀은 앞으로 가라는 기능, 뒤로 가게 구현하면 LSP위반, 느리더라도 앞으로 가야함
DIP 의존관계 역전 원칙
프로그래머는 "추상화에 의존해야지, 구체화에 의존하면 안된다." 의존성 주입은 이 원칙을 따르는 방법 중 하나다.
-> 쉽게 이야기해서 구현 클래스에 의존하지 말고, 인터페이스에 의존하라는 뜻
객체 세상도 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다. 구현체에 의존하게 되면 변경이 아주 어려워 진다.
정리
객체 지향의 핵심은 다형성
다형성 만으로는 쉽게 부품을 깔아 끼우듯이 개발할 수 없다.
다형성 만으로는 그현 객체를 변경할 때 클라이언트 코드도 함께 변경된다.
다형성 만으로는 OCP, DIP를 지킬 수 없다.
changho Youn
BackEnd Developer ChangDDAO입니다.🐌
팔로우
이전 포스트
백준 알고리즘 2644 DFS & BFS
다음 포스트
프로그래머스 PCCP 2번문제
0개의 댓글
댓글 작성