티스토리 뷰

SOLID

  • 로버트 C.마틴이 제시하고 마이클 페더스가 정리한, 객체지향 설계 5원칙
  • SRP, OCP, LSP, ISP, DIP

 

 

단일 책임 원칙( SRP: Single Responsibility Principle)

  • 하나의 객체에 하나의 책임만 부여해야 한다.
상세

하나의 객체에 여러 책임이 부여되면, 각 책임이 서로 변경에 영향을 받을 수 있는 의존성을 가지게 될 수 있다. 이 때문에, 하나의 객체는 하나의 책임만 부여하여 결합도를 낮춰야 한다.

 

개방 폐쇄 원칙 (OCP: Open Closed Principle)

  • 확장에는 열려있고, 변경에는 닫혀있어야 한다.

상세

  • 확장은 가능하게 하여, 애플리케이션 변화에 대응할 수 있어야 하지만, 그 변화가 지금 애플리케이션 전체에 영향이 가지 않도록 폐쇄되어 있어야 한다.

 

 

리스코프 치환 원칙 (LSP: Liskov Substitution Principle )

  • 하위타입은 언제나 상위타입으로 표현될 수 있어야한다.

상세

  • 하위 클래스 is a kind of 상위 클래스 ( 하위 클래스는 상위 클래스의 한 종류다. )
  • 구현 클래스 is able to 인터페이스 - 구현 분류는 인터페이스 할 수 있어야 한다.
  • AutoCloseable(자동으로 닫힐 수 있어야 함) , Appendable(덧붙일 수 있어야 함) , Cloneable(복제할 수 있어야 함) , Runnable(실행할 수 있어야 함)

 

 

인터페이스 분리 원칙 (ISP: Interface Segregation Principle)

  • 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 가져서는 안 된다.

상세

  • 클라이언트가 자신이 사용하지 않는 메서드에 의존 관계를 가지지 않는다는 것은 구현체에 접근할 수 있는 인터페이스를 만들고, 이 인터페이스가 제공하는 메서드를 통해서만 구현체에 접근할 수 있게하여 클라이언트가 필요로하는 인터페이스만 의존 관계를 가지게 한다.

 

 

의존성 역전 원칙 (DIP : Dependency Inversion Principle)

  • 추상화 정도가 높은 모듈이 추상화 정도가 낮은 모듈에 의존해서는 안된다.

상세

  • 구현체에 의존하지 말고 인터페이스에 의존하자.

'Infrastructure' 카테고리의 다른 글

세션 불일치 문제와 해결방법  (0) 2022.07.25
쿠키(Cookie)와 세션(Session)  (0) 2022.07.24
메모리 풀 (Memory Pool)  (0) 2022.07.22
오브젝트 풀 (Object Pool)  (1) 2022.07.20
메모리 단편화(Memory Fragmentation)  (0) 2022.07.20
댓글