Justin의 개발 로그
OOP - SOLID 원칙 5.의존관계 역전 원칙, Dependency Inversion Principle

객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. 이 원칙은 다음과 같은 내용을 담고 있다. 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다. 이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다'는 객체 지향적 설계의 대원칙을 제공한다. 의존 관계 역전 원칙은 상위 모듈은 하위 모듈의 구현 내용에 의존하면 안 된다는 원칙이다...

article thumbnail
OOP - SOLID 원칙 4.인터페이스 분리 원칙(ISP, Interface Segregation Principle)

인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에는 의존하지(depend on) 않아야 한다는 원칙이다. 인터페이스를 구현(implement)하거나, 클래스를 상속(extends)했는데, 사용하지 않거나 구현할 필요가 없는 메소드가 있다면 분리를 해줘야 한다는 원칙이다. 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용(구현)할 수 있게 한다. 이와 같은 작은 단위들을 역할 인터페이스라고도 부른다. 인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다. 인터페이스 (Interface) 클래스 사용의 권고사항을 제시하는 역할을 하는 특수형태의 클래스 아무런 구..

article thumbnail
OOP - SOLID 원칙 3.리스코프 치환 원칙(LSP, Liskov Substitution Principle)

리스코프 치환 원칙(영어: Liskov substitution principle, LSP)은 바바라 리스코프가 자료 추상화와 계층 (Data abstraction and hierarchy)이라는 제목으로 기조연설을 한 1987년 컨퍼런스에서 처음 소개한 내용 자료형 {S}가 자료형 {T}의 하위형이라면, 프로그램에서 자료형 {T}의 객체는 프로그램의 속성을 변경하지 않고 자료형 {S}의 객체로 교체할 수 있다. public interface Animal { public void cry(); public void move(); public void MoveFast(); } public class Dog implements Animal { private String sould = "bowwow"; publi..

OOP - SOLID 원칙 2.개방-폐쇄의 원칙(OCP, Open-Closed Principle)

개방-폐쇄의 원칙, OCP, Open-Closed Principle 자신의 확장에는 열려있고, 주변의 변화에 대해서는 닫혀있어야 한다. 내부 책임(정보, 기능, 로직...)의 확장성은 확보하되, 다른 클래스 및 메소드 변경에 대해서는 영향을 받지 않도록 설계해야 한다. SOLID 제1 원칙인 단일 책임의 원칙(Single Responsibility Principle)에 맞게 설계된 클래스와 메소드라면 개방-폐쇄의 원칙(OCP)도 준수될 가능성이 높다. 그만큼 단일 책임의 원칙(SRP)가 중요함 개방-폐쇄의 원칙이 말로는 이해되기 쉽지만, 실제로 클래스 설계에 어떻게 반영을 해야 하는지를 이해하려면 아래 항목을 이해하고, 클래스 설계 시에 이를 준수하면 된다. 방향성 제어 컴포넌트간 의존성 방향은 단방향이..

article thumbnail
OOP - SOLID 원칙 1.단일 책임의 원칙(SRP, Single Responsibility Principle)

SOLID 원칙 로버트 마틴이 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙 디자인패턴 및 스프링 프레임워크의 기본 설계(사상) 또한 SOLID 원칙을 기초로 함 단일 책임의 원칙, Single Responsibility Principle [ ˈsɪŋɡl rɪ|spɑːnsə│bɪləti ˈprɪnsəpl ] 개방-폐쇄 원칙, Open-Closed Principle 리스코프 치환 원칙, Liskov Substitution Principle [ |sʌbstɪ│tuːʃn ] 인터페이스 분리 원칙, Interface Segregation Principle [ ˌseɡrɪˈɡeɪʃn ] 의존관계 역전 원칙, Dependency Inversion Principle [ dɪˈpendənsi ɪn│vɜː..