베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 데이터베이스
    • java
    • 자바8
    • 토비스프링
    • dfs
    • 백준
    • 이펙티브자바
    • 스프링
    • BFS
    • 알고리즘
    • C++
    • 자바
    • 스레드
    • Spring
    • 함수형인터페이스
    • jpa
    • 코드업
    • 스프링시큐리티
    • leetcode
    • 운영체제

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    JAVA

    좋은 객체 지향 설계의 5가지 원칙 (SOLID)

    2021. 12. 30. 15:35

    SRP (Single Responsibility Principle)

    한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것이 모호한데, 중요한 기준은 변경. 변경이 적을 수록 책임 원칙을 잘 따른 것이다.

     

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

    확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

       → 다형성을 활용하면 이것이 가능함.

    다형성만 이용하면 구현 객체를 변경하려면 클라이언트 코드를 변경해야 함.

       → 객체를 생성하고, 연관관계를 맺어주는 별도의 조립, 설정자가 필요함.

     

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

    프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함.

    → 하위 클래스는 인터페이스 규약을 다 지켜야 한다. 엑셀을 밟을 때 뒤로 가게도 만들 수 있지만 무조건 앞으로 가게 만들어야 한다.

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

    특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

    자동차라는 인터페이스가 있고 운전, 정비와 관련된 인터페이스가 있을 때 이를 두 개로 분리

      → 사용자 클라이언트를 운전자 클라이언트랑, 정비 클라이언트로 구분할 수 있음.

    DIP(Dependency Inversion Principle) 의존관계 역전 원칙

    프로그래머는 추상화에 의존하고, 구체화에는 의존하면 안된다.

    MemberRepository m = new MemoryMemberRepository(); 

    MemberService는 MemoryMemberRepository라는 구현체에도 의존하고 있음 (dip 위반)

      'JAVA' 카테고리의 다른 글
      • [Java] 함수형 인터페이스와 람다 표현식
      • [Java] isSameAs와 isEqaulTo
      • [Java] Iterator 사용법
      • [Java] HashMap 기본 사용법
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바