반응형
응집도와 결합도
좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다
응징도가 높을수록 하나의 책임에 집중하고 독립성이 높아져서 재사용 및 유지보수가 용이하다.
결합도가 낮을수록 모듈 간의 상호 의존성이 줄어들어 객체의 재사용 및 유지보수가 유리하다.
1. SRP ( Single Responsibility Principle ) 단일 책임 원칙
어떠한 클래스를 변경해야 하는 이유는 한 가지뿐이어야 한다.
모든 클래스는 하나의 책임만 가진다. 클래스가 제공하는 모든 기능은 이 책임과 깊게 부합해야 한다.
중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책인 원칙을 잘 따른 것이다.
2. OCP ( Open Cloised Principle ) 개방 폐쇄 원칙
소프트웨어 요소는 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.
상위 클래스 또는 인터페이스를 중간에 둠으로써, 자신은 변회에 폐쇄적이지만,
인터페이스는 외부의 변화에 대해서 확장을 개방해 줄 수 있다. ( 다형성 )
3. LSP ( Liskov Substitution Principle ) 리스코프 치환 원칙
서브 타입은 언제나 자신의 기반(상위) 타입으로 교체할 수 있어야 한다.
4. ISP ( Interface Segregation Principle ) 인터페이스 분리 원칙
클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다.
인터페이스를 작게 분리하면 인터페이스가 명확해지고, 대체 가능성이 높아진다.
5. DIP ( Dependency Inversion Principle ) 의존 역전 원칙
자신보다 변하기 쉬운 것에 의존하지 말아야 한다.
즉 구체적인 것이 추상화된 것에 의존해야 한다.
클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다.
구현체에 의존하게 되면 변경이 아주 어려워진다.
반응형
'Java' 카테고리의 다른 글
객체 지향 프로그래밍 (0) | 2021.11.09 |
---|
댓글