객체지향 5대 원칙 : SOLID

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

-      개방 폐쇄 원칙(Open/closed principle)

-      리스코프 치환 원칙(Liskov substitution principle)

-      인터페이스 분리 원칙(Interface segregation principle)

-      의존관계 역전 원칙(Dependency inversion principle)

 

 

* 단일 책임 원칙(Single Responsibility Principle, SRP)

모든 Class는 하나의 책임만 가지며, 그 책임은 완전히 캡슐화되어야 한다. 작성된 class는 하나의 기능만 가지며, 그 Class가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어야 한다. 이는 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.

 

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

클래스, 모듈 함수 등의 소프트웨어 객체는 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다.

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

 

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

리스코프 치환 코드는 상속에 대한 개념이다. 부모 Class가 들어갈 자리에 자식 Class를 넣어도 잘 구동되어야 한다 라는 원칙이다. 서브 타입은 기반 타입이 약속한 규약을 지켜야 한다.

 

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

클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다 라는 원칙이다.

‘하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다.’

큰 덩어리의 인터페이스들을 구체적으로 작은 단위들로 분리시킴으로써 꼭 필요한 메서드들만 이용할 수 있게 한다. 시스템의 내부 의존성 관계를 느슨하게 하여 리팩토링, 수정, 재배포를 쉽게 할 수 있도록 한다.

 

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

1.     상위 모듈은 하위 모듈에 종속되어서는 안된다. 둘 다 추상화에 의존해야 한다.

2.     추상화는 세부사항에 의존하지 않는다. 세부사항은 추상화에 의해 달라져야 한다.

상위 모듈이 하위 모듈에 의존하는 전통적인 의존 관계를 반전시킴으로써, 상위 모듈이 하위 모듈의 구현으로부터 독립되어야 한다.

'Computer Science > Languages' 카테고리의 다른 글

Garbage Collection (GC) : 가비지 컬렉션  (0) 2019.10.08
[javascript] Hoisting 호이스팅이란  (1) 2019.07.11
[java 예외처리]Try-with-resources  (2) 2019.07.11
java tip  (0) 2019.02.18
[java] 쓰레드(Thread)  (0) 2019.01.24

+ Recent posts