inblog logo
|
taker
    디자인패턴

    SOLID

    김인범's avatar
    김인범
    Nov 14, 2024
    SOLID
    Contents
    요약
    • SOLID란? 객체지향 설계의 5가지 원칙입니다. 이 원칙을 이행한다면 코드의 유연성, 확장성, 유지보수성이 높아집니다.
     

    1. SRP (단일 책임 원칙)

    • 한 클래스는 하나의 책임만 가져야 한다!
    코드의 가독성과 유지보수가 쉬워진다는 장점이 있습니다.
    *책임: 클래스가 수행해야하는 역할
    notion image
     

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

    • 소프트웨어 엔티티는 확장에는 열려 있어야 하지만, 변경에는 닫혀있어야 한다!
    기존 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다는 것입니다. 인터페이스 or 추상 클래스를 활용하여 확장 가능성을 열어두고, 기능 구현은 별도의 클래스로 처리하는 방식이 자주 사용됩니다.
     
    notion image
     

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

    • 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다!
    자식 클래스가 부모 클래스의 역할을 대체할 수 있어야 한다는 의미입니다.
    자식 클래스는 부모 클래스가 작동하는 방식과 일관된 작동을 보장해야합니다.
     
    notion image
     

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

    • 클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야 한다!
    하나의 커다란 인터페이스가 아닌 여러 개의 작은 인터페이스들로 분리하여, 클라이언트가 필요한 기능만 선택적으로 구현하도록 해야합니다.
     
    notion image
     

    5. DIP (의존 역전 원칙)

    • 상위 모듈은 하위 모듈에 의존해서는 안됩니다. + 두 모듈 다 추상화에 의존해야합니다.
    인터페이스 or 추상 클래스에 의존하게 하여 결합도를 낮추고 유연성을 높이는 것이 목적입니다.
     
    notion image
     

    요약

    💡
    SOLID의 특징
    1. 유연한 설계
    1. 유지보수성 증가
    1. 확장성 향상
     

    참고 문헌

    💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
    객체 지향 설계의 5원칙 S.O.L.I.D 모든 코드에서 LSP를 지키기에는 어려움. 리스코프 치환 원칙에 따르면 자식 클래스의 인스턴스가 부모 클래스의 인스턴스를 대신하더라도 의도에 맞게 작동되어야 된다고 했습니다. SOLID 원칙이란 객체지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙( SRP, OCP, LSP, ISP, DIP )을 말한다. SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Listov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inver..
    💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
    https://inpa.tistory.com/entry/OOP-%F0%9F%92%A0-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%84%A4%EA%B3%84%EC%9D%98-5%EA%B0%80%EC%A7%80-%EC%9B%90%EC%B9%99-SOLID
    💠 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
    추상화(Abstract)
    추상화란? 객체에서 공통된 속성과 행동을 추출하는 것이다. 자바에서 추상화를 이용하는 방법은 추상 클래스 또는 인터페이스가 있다. 추상 클래스(Abstract Class) 추상 메소드를 포함할 수 있는 클래스이다. abstract를 붙여 사용할 수 있다. 부모로서의 사용은 가능하지만 객체로서의 사용은 불가능하다. 추상 메소드(Abstract Method) 본체가 없는 메소드이다. 리턴 타입 앞에 abstract를 붙여 사용할 수 있다. 추상 메소드의 본체는 추상 클래스를 상속받은 후 재정의할 수 있다. abstract class Animal{ // 추상클래스 public abstract void eat(); //추상 메소드 public abstract void sleep(); //추상 메소드 public..
    추상화(Abstract)
    https://shinsunyoung.tistory.com/m/18
    추상화(Abstract)
    Share article

    taker

    RSS·Powered by Inblog