[객체지향] SOLID란?

SOLID

Robert Cecil Martin, called Uncle bob

SRP(Single Responsibility Principle), 단일 책임 원칙, 솔로 플레이

하나의 클래스는 하나의 책임을 가져야 합니다. 하나의 메소드는 하나의 책임을 가져야 합니다. 변경의 파급효과가 적을수록, 변경으로 인한 전파가 적을 수록 좋습니다.

OCP(Open Close Principle), 개방 폐쇄 원칙, 마술과 같은 원칙

새로운 기능을 쉽게 추가 하거나 확장할 수 있고 기존코드가 변경되지 않도록 개발한다는 마법같은 원칙입니다. 다형성을 활용하면 아래처럼 새로운 기능의 Repository를 쉽게 변경할 수 있습니다.

Repository repository = new MemoryRepository(); // 기존의 기능
Repository repository = new JPARepository(); // 변경한 기능

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

Barbara Liskov

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

범용 인터페이스 하나보단 역할에 맞게 쪼개는 것이 좋습니다.

DIP(Dependency Inversion Principle), 의존 역전 원칙

Dependency(의존)는 코드의 존재를 알고 있다는 뜻입니다. 즉, 직접적으로 접근하고 있다는 것을 의미합니다.

// Repository repository = new MemoryRepository(); 
Repository repository = new JPARepository();
# Servicepublic class Service {
private final MemberRepository repo;

public Service(MemberRepository repo) {
this.repo = repo;
}
}
# Controllervar repository = new MemoryRepository();
Service service = new Service(repository);

--

--

Blog https://chrisjune.dev Work for www.29cm.co.kr

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store