SOLID 원칙
- 객체 지향 프로그래밍에서 좋은 설계와 유지보수 가능한 소프트웨어를 만들기 위한 다섯 가지 핵심 원칙을 제공한다.
- 소프트웨어 개발 과정에서 코드의 유연성, 재사용성, 유지보수성을 높이는 데 중요한 역할을 한다.
- SOLID는 각 원칙의 첫 글자를 따서 명명된 약어이다.
ISP (Interface Segregation Principle, 인터페이스 분리 원칙)
정의
- 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 말아야한다는 원칙이다.
목표
- 클라이언트가 자신이 필요로 하는 인터페이스만을 사용하도록 하여, 불필요한 의존성을 줄인다.
예시
public interface Workable {
void work();
}
public interface Eatable {
void eat();
}
public class Worker implements Workable {
@Override
public void work() { /* working logic */ }
}
public class Manager implements Workable, Eatable {
@Override
public void work() { /* managing logic */ }
@Override
public void eat() { /* eating logic */ }
}
DIP (Dependency Inversion Principle, 의존성 역전 원칙)
정의
- 고수준 모듈은 저수준 모듈에 의존해서는 안 되고, 두 모듈 모두 추상화에 의존해야 하며, 추상화는 세부 사항에 의존하지 않아야 한다는 원칙이다.
목표
- 고수준 모듈과 저수준 모듈 간의 의존성을 줄이고, 시스템의 유연성과 모듈 간의 결합도를 낮춘다.
예시
public interface Repository {
void save();
}
public class SqlRepository implements Repository {
@Override
public void save() { /* SQL save logic */ }
}
public class FileRepository implements Repository {
@Override
public void save() { /* File save logic */ }
}
public class DataService {
private Repository repository;
public DataService(Repository repository) {
this.repository = repository;
}
public void process() {
repository.save();
}
}
⊙ 참고 문헌
- 양세열, 「백엔드 취업 파트타임 스쿨 5기:Part 07. 스프링 프레임워크-Chapter 02. OOP와 스프링 프레임워크-03. OOP잘하는방법SOLID-004」, 제로베이스, 2024, https://zero-base.co.kr/
- 양세열, 「백엔드 취업 파트타임 스쿨 5기:Part 07. 스프링 프레임워크-Chapter 02. OOP와 스프링 프레임워크-03. OOP잘하는방법SOLID-005」, 제로베이스, 2024, https://zero-base.co.kr/
- ChatGPT, "SOLID 원칙"에 대한 답변, 2024년 09월 17일, https://chatgpt.com/
- Vlad Ungureanu, Interface Segregation Principle, Aug 14, 2019, https://medium.com/@learnstuff.io/interface-segregation-principle-dd885e59aec9
- Vlad Ungureanu, Dependency Inversion Principle, Sep 3, 2019, https://medium.com/@learnstuff.io/dependency-inversion-principle-aafa06af26b4