1. SPR(Single Responsibility Principle) - 단일 책임의 원칙

시스템의 모든 객체는 하나의 책임만을 가져야한다. 객체가 제공하는 모든 기능은 단 하나의 책임을 수행하는데 집중되어 있어야 한다.

 

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

기존에 개발된 클래스에 수정사항이 발생하면 그것을 사용하는 클래스에 사이드 이펙트가 발생할 수 있다.

이것을 방지하기 위해 기존 클래스를 수정하지 않고 대신 새로운 클래스나 기능을 만들어 확장해야 한다.

클래스는 기능 확장에 대해서는 열려있지만, 코드 수정에 대해서는 닫혀있어야 한다.

예시) 

  • JDBC와 Mybatis, Hibernate 등
  • JAVA의 Stream(Input, Out)

 

3. LSP(Liskov Substitution Principle) - 리스코프 치환 원칙

LSP란 '자식 클래스는 부모 클래스가 사용되는 곳에 대체될 수 있어야 한다'는 원칙이다.

어떤 클래스가 부모 클래스 또는 인터페이스를 의존한다면 해당 부모클래스를 상속한 자식클래스나 인터페이스를 구현한 클래스의 다형성으로 언제든 변경 가능하다.

 

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

ISP는 SRP와 비슷하다.

SRP는 클래스 관점에서 '클래스는 자신이 사용하지 않는 메소드에 의존하면 안된다'. 라는 인터페이스 사용 가이드라인을 제시한다.

ISP는 인터페이스 관점에서 '클래스는 자신이 사용하지 않는 메소드에 의존하면 안된다'. 라는 인터페이스 사용 가이드라인을 제시한다.

 

5. DRY(Don't Repeat Yourself) / DIP(Dependency Inversion Principle)

  • DRY : 공통되는 부분은 추출하여 추상화하고 한곳에 두어 중복코드를 피하라
  • DIP : 구체적인 클래스 대신 추상적인 클래스에 의존하라는 뜻이다. 
// 사용하지말기
ArrayList list = new ArrayList()

// 사용하기
List list = new ArrayList();

클라이언트 클래스에서는 부모 클래스만 의존하고 자식 클래스를 인자로 넘겨받아 저장한다

 

 

'개발 지식' 카테고리의 다른 글

동시성과 병렬성  (0) 2021.06.08
REST API  (0) 2021.05.19
웹 서버와 WAS 의 차이점  (0) 2021.05.19
응집도와 결합도  (0) 2021.05.06

+ Recent posts