거누의 개발노트

객체지향 5대 원칙 : SOLID ? 본문

Java

객체지향 5대 원칙 : SOLID ?

Gogozzi 2022. 3. 11. 04:59
반응형

단일 책임 원칙(Single responsibility priciple, SRP)

하나의 클래스는 하나의 책임만 가져야한다.

책임이란 기준이 모호하기 때문에 변경 을 책임의 기준으로 삼으면 설계에 용이할 수 있다.

어떠한 역할에 대해 변경사항이 발생했을때, 영향을 받는 기능만 모아둔 클래스라면 동일한 책임을 지닌 기능이 모인 집합으로써 SRP 원칙이 적용된 설계로 볼 수 있을것 같다.

이처럼 변경사항이 있을때, 애플리케이션의 파급 효과가 적으면 SRP 원칙을 잘 따른것으로 볼 수 있다.

 

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

방폐쇄 원칙은 클래스, 모듈 함수 등의 소프트웨어 개체는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다는 프로그래밍 원칙이다.

수정이 일어나더라도 기존의 구성요소에서는 수정이 일어나지 않아야 하며, 쉽게 확장이 가능하여 재사용을 할 수 있도록 해야한다는 의미이다.

 

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

리스코프 치환 원칙은 부모 객체와 이를 상속한 자식 객체가 있을 때 부모 객체를 호출하는 동작에서 자식 객체가 부모 객체를 완전히 대체할 수 있다는 원칙이다.

객체지향 언어에선 객체의 상속이 일어난다. 이 과정에서 부모/자식 관계를 정의할 수 있다. 자식 객체는 부모 객체의 특성을 가지며, 이를 토대로 확장할 수 있다. 하지만 이 과정에서 무리하거나 객체의 의의와 어긋나는 확장으로 인해 잘못된 방향으로 상속되는 경우가 생긴다.

리스코프 치환 원칙은 올바른 상속을 위해 자식 객체의 확장이 부모 객체의 방향을 온전히 따르도록 권고하는 원칙이다.

정사각형, 직사각형 이야기...

 

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

인퍼테이스 분리 원칙은 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야한다는 원칙이다.

구현한 객체에 무의미한 메소드의 구현을 방지하기 위해 바늗시 필요한 메소드만을 상속/구현하도록 권고한다. 만약 상속할 객체의 규모가 너무 크다면, 해당 객체의 메소드를 작은 인터페이스로 나누는 것이 좋다.

 

의존성 역전 원칙(Dependency Inversion Principle, DIP)

객체는 저수준 모듈보다 고수준 모듈에 의존해야한다는 원칙이다.

고수준 모듈은 인터페이스와 같은 객체의 형태나 추상적 개념을 의미한다.

저소준 모듈은 구현된 객체이다.

따라서 객체는 객체보다 인터페이스에 의존해야한다로 바꿔서 설명할 수 있다. 가급적 객체의 상속은 인터페이스를 통해 이루어져야 한다는 의미로 해석할 수 있다.

 

 

(추후 좀 더 자세히 설명)

반응형
Comments