1. 개요

  1. SRP(Single Responsibility Principle) - 단일 책임 원칙
  2. OCP(Open/closed principle) - 개방 / 폐쇄 원칙
  3. LSP(Liskov Substitution Principle) - 리스코프 치환 원칙
  4. ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
  5. DIP(Dependency Inversion Priciple) - 의존관계 역전 원칙

2. 종류

2-1) SRP(단일 책임 원칙)

  • 한 클래스는 하나의 책임만 가져야한다.
  • 하나의 책임이라는 것은 모호
    • 크기는 유동적
    • 문맥과 상황에 따라 상이
  • 중요 기준은 변경
    • 변경할 경우 파급 효과가 적으면 해당 원칙 적용
    • ex) 객체의 생성과 사용을 분리

2-2) OCP(개방 / 폐쇄 원칙)

  • 확장에는 열려있으나 변경에는 닫혀 있어야 한다는 개념
  • 다형성 활용
  • 인터페이스를 구현한 새로운 클래스를 생성하여 새로운 기능 구현
  • 의문점 : 구현 객체를 변경하려면 클라이언트 코드를 변경
    • 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요

2-3) LSP(리스코프 치환 원칙)

  • 프로그램 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 변경 가능해야 한다는 원칙
  • 다형성에서 하위 클래스는 인터페이스 규약을 지켜야한다는것, 다형성 지원을 위한 원칙, 인터페이스 구현 구현체는 신뢰성이 있어야 한다는 원칙을 지키기 위한 원칙
  • ex) 자동차 인터페이스의 엑셀은 앞으로 가야한다는 원칙을 보장 -> 뒤로가게 구현한다면 원칙 위배

2-4) ISP(인터페이스 분리 원칙)

  • 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다는 원칙
  • 인터페이스가 명확해지고 대체 가능성이 높아지는 장점
    • 하나의 비즈니스 로직에 귀속된 여러 인터페이스 중 하나를 변경하더라도 다른 인터페이스에 귀속된 클라이언트에 영향을 주지 않는다는 의미로 해석

2-5) DIP(의존관계 역전 원칙)

  • 추상화에 의존해아지 구체화에 의존하면 안되다는 원칙
    • 의존성 주입이 해당 원칙의 대표적 예시
    • 인터페이스에 의존하라는 의미
  • 역할에 의존해야 한다는 의미로 인터페이스에 의존하도록 설계해야 변경이 자유로워진다는 의미



3. 결론

  • 객체 지향의 핵심은 다형성
    • 다형성 만으로는 OCP, DIP를 준수하기 어려움
profile
개발 학습

0개의 댓글