본문 바로가기
IT 용어 개념 정리

[디자인패턴] 객체지향 SOLID 원칙이란?

by 파프리카_ 2021. 3. 11.
728x90
반응형

프로그래밍을 하다보면 언젠가는 한번쯤 들어볼 SOLID !
객체 지향 프로그래밍의 기본 5 원칙이라고 한다.
간단하게 뿌시고 가자!🎊

SOLID (객체 지향 설계)

  • 로버트 마틴이 2000년대 초반에 명명한 OOP의 다섯 가지 기본 원칙

    🤔 왜 만들었지?
    시간이 지나도 유지 보수확장이 쉬운 소프트웨어를 개발하기 위해!

  • SOLID : 마이클 페어드가 기억하기 쉽게 앞 글자만 따서 소개한 것

SOLID 원칙의 가장 중요한 점은 응집도를 높이고, 결합도를 낮추어
🌞좋은 프로그래밍🌞을 하자는 것이다!

👀 OOP ?

Object Oriented Programming

  • 객체를 기본단위로 하여, 객체와 객체 간의 관계를 중심으로, 분석, 설계, 구현, 운영하는 방식
두문자 의미 개념
S SRP
(Single Resposibility Principle)
하나의 객체는 하나의 기능만 담당할 것!
-> 응집도를 위해 결합도를 낮추자
O OCP
(Open/Closed Principle)
기존 코드의 변경 없이, 달라진 요구사항을 적용하여 수정 추가할 수 있도록!
-> 주로 Interface를 통해 이를 실현한다
L LSP
(Liskov Substitution Principle)
자식 클래스는 부모 클래스의 말을 잘 들어야한다!
🙄? 가급적이면 부모 클래스에 있는 멤버(속성, 기능)을 사용하자.
일관된 약속을 유지할 수 있다. (다운캐스팅 필요❌)
I ISP
(Interface Segregation Principle)
인터페이스 분리 원칙으로, 하나의 인터페이스는 그에 맞는 = 실제 기능을 하는 멤버로만 구성한다!
-> 시스템 내부의 의존성을 낮춰, 유지보수성 향상!
D DIP
(Dependency Inversion Principle)
의존 대상은 실제 메서드가 구현된 클래스보다는 Interfaceabstract class가 좋다!
-> DI(의존성 주입)을 통해, 의존 대상 객체를 선택할 수 있다.
이 때 의존 대상 객체에 구체적인 값이나 로직이 할당되어 있지 않다면
(변수명 or 메서드명만 있는 경우),
현재 클래스에서 반드시 값을 할당하거나 구현부를 정의해야한다.
-> 깨끗한 종이에 새로 그림을 그리는 것이 좋다!

📖 참고 (더 구체적인 내용이 있어서 읽어보시면 좋을 것 같습니다!)

728x90
반응형