1. SRP : 단일 책임 원칙 (Single responsibility principle)

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

 

2. OCP : 개방/폐쇄 원칙 (Open/closed principle)

- 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

- 다형성을 사용해도 OCP를 위배하고 마는데 어떻게? -> AppConfig로 해결했으나 비효율적 -> 이를 해결하기 위해 스프링 등장

 

3. LSP : 리스코프 치환 원칙 (Liskov substitution principle)

- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

- 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위 한 원칙, 인터페이스를 구현한 구현체는 믿고 사용하려면, 이 원칙이 필요하다.

- 프로그램의 정확성?

-> ex : 자동차 인터페이스의 goForward() 는 앞으로 나아가는 기능을 해야한다. 나아가는 방식이 다르더라도 반드시 '앞으로' 나아가야 한다

 

4. ISP : 인터페이스 분리 원칙 (Interface segregation principle)

- 범용 인터페이스 하나보다는 여러 개의 인터페이스로 분리하는 것이 낫다.

- ex : 자동차 인터페이스 하나보다는 운전 인터페이스, 정비 인터페이스 둘로 나누는 것이 낫다.

 

5. DIP : 의존관계 역전 원칙 (Dependency inversion principle)

- 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.” 의존성 주입은 이 원칙 을 따르는 방법 중 하나다.

- 구현 클래스에 의존하지 말고 인터페이스에 의존하도록 해야한다는 말

- ex : 아반떼에 의존하는 것이 아니라 자동차에 의존해야한다.

- OCP와 마찬가지로 다형성을 사용해도 DIP를 위배하게 된다. -> AppConfig로 해결했으나 비효율적 -> 스프링으로 해결

 

 

 

출처 : www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

+ Recent posts