본문 바로가기
Java

객체지향 설계 5원칙 SOLID

by 자바지기 2021. 11. 22.
반응형

응집도와 결합도

좋은 소프트웨어 설계를 위해서는 결합도는 낮추고 응집도는 높여야 한다

 

응징도가 높을수록 하나의 책임에 집중하고 독립성이 높아져서 재사용 및 유지보수가 용이하다.

결합도가 낮을수록 모듈 간의 상호 의존성이 줄어들어 객체의 재사용 및 유지보수가 유리하다.

 

 

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

댓글