[JAVA] SOLID

gnoesnooj·2021년 11월 26일
0

스터디를 진행하던 중 SOLID에 대한 질문을 받게 되었고, 처음 들어보는 단어에 전혀 대답을 못해서 알아보게 되었다.

SOLID 란 객체지향 설계에서 지켜야할 5가지의 원칙이다. SOLID 원칙들은 프로그래머가 코드를 읽기 쉽고, 확장하기 쉬울 수 있도록 리팩터링을 하며 코드 스멜을 줄이기 위한 노력과 지침이다.

SOLID

  • SRP - 단일 책임 원칙, Single Responsibility Principle
    : 한 클래스는 하나의 책임만을 가져야 한다.
    클래스가 변경되는 이유에 있어서 하나만의 이유여야만 한다.

  • OCP - 개방 폐쇄 원칙, Open Closed Principle
    : 확장에는 열려있고, 주변 변경에는 닫혀 있어야 한다.
    : 본인이 확장하는 건 괜찮으나, 주변이 변경되는 것에 대해서 본인이 영향을 받는다면 객체지향적이라고 할 수 없다.

  • LSP - 리스코프 치환 원칙 , Liskov Substitution Principle
    : 프로그램 객체는 상위 기능을 지키면서 하위 인스턴스로 바꿀 수 있어야 한다.

  • ISP - 인터페이스 분리 원칙 , Interface Segregation Principle
    : 하나의 범용 인터페이스 보다 여러가지로 나눈 인터페이스가 낫다.
    : 자동차 하나보다 책임에 따라 자동차의 기능별(운전, 정차, 회전...)로 나누는 것이 낫다. (+ 책임의 기준에 따라 해석하는 바가 다를 수 있는데, 그건 개발자가 정하기 나름이다.)

  • DIP - 의존 역전 법칙 , Dependency Inversion Priciple
    : 구체화보다 추상화에 의존해야한다.
    : 구현체들 각각보다 하나의 인터페이스에 더 집중해야 한다.(구현체 각각에 의존하지말고, 추상화에 의존해서 다형성을 실현한다.)

profile
컴공4학년 비전공자

0개의 댓글