[ OOP ] SOLID 원칙

이숭인·2021년 8월 18일
0

OOP

목록 보기
1/5

SOLID 원칙


SOLID 원칙은 객체지향 설계 5대 원칙이라 불립니다.

  • SRP (Single Responsiblity Principle)

  • OCP (Open Closed Principle)

  • LSP (Liskov Substitution Principle)

  • ISP (Interface Segregation Principle)

  • DIP (Dependency Inversion Principle)




SRP (Single Responsiblity Principle)


단일 책임 원칙

  • 모든 클래스는 각각 하나의 책임 만 가져야 한다.
  • 클래스는 그 책임캡슐화 해야 함을 말한다.

SRP 원칙을 만족하면 좋은 이유?

한 클래스가 가진 책임이 많아지면 클래스 내부에서의 강한 결합 이 발생하게 됨. 결합도 가 높아지면 유지보수 비용이 증가 하게 되기 때문에 책임을 분리시킬 필요 가 있다.

응집도높고 결합도낮은 프로그램을 보통 설계를 잘한 프로그램 이라고 한다.




OCP (Open Closed Principle)


개방 - 폐쇄 원칙

  • 확장에는 개방, 수정에는 폐쇄.
  • 기존의 코드를 변경하지 않으면서(close) 기능을 추가할 수(open) 있도록 설계가 되어야 한다.

OCP 원칙을 만족하면 좋은 이유?

변경에 유연 하므로 유지보수 비용줄여주고 코드의 가독성높아진다.




LSP (Liskov Substitution Principle)


리스코프 치환 원칙

  • 자식 클래스 는 언제나 자신의 부모 클래스대체할 수 있다 는 원칙
    (부모 클래스가 들어갈 자리에 자식 클래스를 넣어도 잘 작동해야 한다.)

  • 자식 클래스부모 클래스책임을 무시 하거나 재정의 하지 않고 확장 만 수행 하도록 해야한다.




ISP (Interface Segregation Principle)


인터페이스 분리 원칙

  • 각각의 클래스 내에서 자신이 사용하지 않는 인터페이스구현하지 말아야 한다.
  • 일반적인(범용적인) 인터페이스 보다 여러개의 구체적인 인터페이스 가 좋다.

왜 내꺼만 구현해야해?

자신이 사용하지 않는 기능에 영향을 주면 안되기 때문




DIP (Dependency Inversion Principle)


의존 역전 원칙

  • 의존 관계 를 맺을 때 변화가 많은 것 보다는 변화가 없는 것에 의존 해야 한다.
  • 구체적인 클래스 보다 인터페이스 혹은 추상 클래스의존 관계 를 맺으라는 말

변화가 많은 것, 변화가 적은 것?

  • 변화하기 쉬운 것
    -> 구체적인 것
    -> 구체화된 클래스

  • 변화가 적은 것(어려운 것)
    -> 추상적인 것
    -> 추상 클래스인터페이스


profile
iOS Developer

0개의 댓글