상세 컨텐츠

본문 제목

객체지향 디자인의 5원칙(SOLID 원칙)

Java/Design Patterns

by ChrisMare 2019. 1. 2. 21:47

본문


앞에 설명할 5가지의 원칙의 앞글자를 따서 (SOLID)라고 말합니다.


S - SRP(Single responsibility principle) 단일 책임 원칙

    • 모든 클래스는 단 하나의 책임을 가진다. 다시 말하면 클래스를 수정할 이유가 오직 하나여야한다는 뜻이기도 합니다.
    • 예를 들어, 계산기 클래스가 있다면, 계산을 하는 책임만을 해야지 계산을 화면에 나타내는 책임과는 서로 분리시켜야합니다. 이는 SRP에 위반한다는 의미입니다.

O - OCP(Open Closed Principle) 개방 패쇄 원칙

    • 확장에 대해서는 개방, 수정에 대해서는 폐쇄
    • 예를 들어, 캐릭터가 공격한다라는 클래스를 구현할 때 자식 클래스로 구현하면 공격한다라는 기본 전제를 수정할 경우가 생긴다면, 자식에게 오버로드한 기능 모두의 코드를 수정하게 될 뿐만아니라, 이로인해 다른문제를 야기할 수 있습니다. 따라서 공격한다라는 행위를 구성을 이용하여 interface로 표현하고 표현을 구현한 뒤 캐릭터에서 그것을 이용하면 캐릭터 클래스의 수정없이 코드의 확장과 변경이 용이해집니다.

L - LSP(Liskov Substitusion Principle) 리스코프 치환 법칙

    • 자식 클래스는 언제나 자신의 부모클래스를 교체할 수 있다는 원칙입니다.
    • 업캐스팅을 해도 아무런 문제가 없어야 한다.

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

    • 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙.
    • 자신이 사용하지 않는 기능(인터페이스)에는 영향을 받지 말아야 한다.
    • 여러개의 구체적인 클래스를 생성 해 implement 시키면 깔끔한 구조가 가능하다.

D - DIP(Dependency Inversion Principle) 의존성 역전 법칙

    • 상위클래스는 하위클래스에 의존해서는 안된다는 법칙.


좋은 객체지향 설계를 위해서는 다음의 5가지 원칙을 따르는 것이 좋으며, 

다음의 원칙들을 기반으로 디자인 패턴이 되기 때문에,

디자인 패턴을 공부하기 전에 알아두면 더 깊이 이해할 수 있게 됩니다.

'Java > Design Patterns' 카테고리의 다른 글

Strategy Pattern(전략 패턴)  (0) 2019.01.02

관련글 더보기

댓글 영역