SOLID 원칙
SOLID 원칙은 객체지향디자인을 할 때에 이해성, 유연성, 유지보수성을 위해서 고안된 원칙입니다. 유지보수 하고 확장하고 디버깅하기 쉬워집니다. Rober C. Martin (a.k.a Uncle Bob)에 의해서 고안되었습니다.
다섯가지의 SOLID 원칙은 5개로 이루어져 있으며, 각각의 이니셜을 따서 이름이 붙었습니다.
1. S - Single Responsibility Principle
2. O - Open/Closed Principle
3. L - Liskov Substitution Principle
4. I - Interface Segregation Principle
5. D - Dependency Inversion Principle
Single Responsibility Principle(SRP)
단일 책임 원칙 : 한 클래스는 하나의 책임만 가져야 한다.
클래스가 변경되는 요인은 단 하나만 있어야 한다는 원칙입니다. 여러가지 책임이 동시에 존재하는 클래스는 좋지 않습니다.
유지보수, 가독성, 재사용성에 이점이 있습니다.
Open/Closed Principle (OCP)
개방/폐쇄 원칙 : 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다
기존 코드를 수정하지 않고도 기능 추가가 가능해야 합니다.
확장, 재사용성, 시험성
Liskov Substitution Principle (LSP)
리스코프 치환 원칙 : 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다
자식 클래스가 부모의 메소드를 오버라이딩 할 때에 프로그램의 정합성에 영향이 없어야 합니다.
상속시 정합성 보장, 부작용 방지, 유지보수성
Interface Segregation Principle (ISP)
인터페이스 분리 원칙: 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나 보다 낫다.
Interface를 구분지어서 각각 따로 만드는 것이 좋다. 사용하지 않는 인터페이스가 있는 클래스를 방지합니다.
불필요한 코드 방지, 유연성 증대, 유지보수성
Dependency Inversion Principle (DIP)
의존관계 역전원칙 : 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.
high-level 모듈들은 추상화에 의존해서 서로 연관되어야합니다. low-level의 디테일에 따라서 상위 모듈들의 변화가 있으면 안됩니다. 이 문제를 해결하기 위한 수단으로 Dependency Injection(DI, 의존성 주입)을 사용하기도 합니다.