SOLID Principle
- SRP(Single Responsibility Principle) : 단일 책임 원칙, 클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
- OCP(Open-Closed Principle) : 개방-폐쇄 원칙, 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
- LSP(Liskov Substitution Principle) : 리스코프 치환 원칙, 상위 타입의 객체를 하위 타입의 객체로 치환해도 프로그램은 동작해야 한다.
- ISP(Interface Segregation Principle) : 클라이언트는 강제로 사용하지 않는 인터페이스에 의존해서는 안된다.
- DIP(Dependency Inversion Principle)
- High-level module은 low-level module에 의존해서는 안되며 둘다 abstraction에 의존해야 한다.
- Abstraction은 detail에 의존해서는 않된다. Detail이 Abstraction에 의존해야 한다.