Dependency Inversion Principle
상위 모듈은 하위 모듈에 의존해서는 안되어요. 대신, 두 모듈 모두 추상화에 의존해야 해요. 이를 통해 유연성과 재사용성을 높일 수 있어요.
Interface Segregation Principle
클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야 해요. 이를 통해 인터페이스가 구체적이고 간결해져서 유지보수가 쉬워져요. 결과적으로 시스템의 유연성과 확장성이 향상돼요.
Liskov Substitution Principle
서브클래스는 슈퍼클래스의 객체를 대체할 수 있어야 해요. 클라이언트는 서브클래스를 사용해도 프로그램의 정확한 동작이 보장되어야 하지요. 이는 객체 간의 상호 교환성을 높이는 데 중요한 원칙이에요.
소프트웨어는 확장에 열려 있지만 수정에는 닫혀 있어야 해요. 즉, 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있어야 해요. 이를 통해 안정성과 유지 보수성이 향상돼요.
Single Responsibility Principle
클래스나 모듈은 하나의 책임만 가져야 해요. 책임이 분리되면 코드 유지보수가 쉬워지고 변경이 용이해져요. 이렇게 하면 응집력이 높아져 더 안정적인 시스템을 만들 수 있어요.