[객체 지향] SOLID

ltwes·2023년 2월 27일
0

SOLID 원칙

유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 적용할 수 있는 원칙

S: 단일 책임 원칙(Single Responsibillity Principle, SRP)

하나의 객체는 하나의 책임만 가져야 한다는 원칙입니다.
하나의 책임만을 가지게 되면 책임 영역이 확실해지므로 변경으로 인한 연쇄 작용에서 자유로워질 수 있습니다.

O: 개방-폐쇄 원칙(Open-Closed Principle, OCP)

소프트웨어 컴포넌트는 확장에는 열려 있어야 하고 수정에 관해서는 닫혀있어야 한다는 원칙입니다.
즉, 새로운 동작을 추가하거나 요구사항을 변경할 때, 기존 코드를 수정하지 않아야 하며 쉽게 확장할 수 있어야 합니다. 이렇게 된다면 기존 코드의 안정성은 유지하되 요구사항의 변경에 유연하게 대처할 수 있습니다.

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

프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 서브 타입의 인스턴스로 바꿀 수 있어야 한다는 원칙입니다.
서브 타입은 언제나 기반 타입을 완벽하게 대체할 수 있어야 합니다. 이를 지키기 위해서는 서브 타입의 객체가 기반 타입이 약속한 규약을 완벽히 지켜야 합니다.

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

클라이언트 자신이 이용하지 않을 메서드에는 의존하지 않아야 한다는 원칙입니다. 즉, 인터페이스는 클라이언트에게 사용하지 않을 메서드를 강제로 구현하게 해서는 안됩니다.
인터페이스가 클라이언트에게 많은 기능을 제공한다면 클라이언트가 사용하지 않을 메서드도 구현해야 할 수 있습니다. 따라서 필요한 기능들만을 구현할 수 있도록 인터페이스를 작게 분리해야 합니다.

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

프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다는 원칙입니다.
즉, 의존 관계를 맺을 때 변화하기 쉬운 것보다는 변화하기 어려운 것에 의존해야 합니다. 이를 통해 하위 모듈 변경으로부터 상위 모듈이 영향을 받지 않도록 할 수 있습니다.
이러한 원칙을 지키기 위해서는 두가지 규칙을 지켜야 합니다.
첫번째, 상위 모듈이 하위 모듈에 의존해서는 안되며, 둘 다 추상화에 의존해야합니다.
두번째, 추상화는 세부사항에 의존해서는 안되며, 세부사항이 추상화에 의존해야합니다.

profile
Simple is the best

0개의 댓글