우리라이프

객체지향적으로 설계하는 원칙 : SOLID 본문

IT/개발 지식

객체지향적으로 설계하는 원칙 : SOLID

적당히벌고아주잘살자 2018. 3. 11. 20:27
반응형


객체 지향적으로 설계하는데 기본이 되는 설계 원칙인 SOLID에 대하여 알아본다. 

객체 지향의 기본 내용은 캡슐화, 다형성과 추상화, 조립을 통한 재사용 등이 있다.


SOLID 설계 원칙 5가지


단일 책임 원칙 (Single responsibility Principle : SRP)

: 클래스는 단 한 개의 책임을 가져야 한다. 

  이를 위반하면 연쇄적인 코드 수정을 유발 할 수 있다.


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

: 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야한다.

  기능을 변경하거나 확장할 수 있으면서 그 기능을 사용하는 코드는 수정하지 않는다. (코드 유연성에 해당하는 내용으로 추상화, 캡슐화를 통해 알아보자 - interface)

  이를 위반하면 다운캐스팅을 하고, 비슷한 if-else 블록이 존재한다.


리스코프 치환원칙 (Liskov substitution Principle : LSP)

: 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야한다. 

예) public void someMethod(SuperClass sc) {

sc.someMethod(); 

}

someMethod() 는 상위 타입인 SuperClass 타입의 객체를 사용하고 있는데, 이 메서드에 someMethod(new SubClass()); 를 전달해도 정상 동작 해야한다.

  문제점은 직사각형-정사각형 문제로 가로, 세로 값 구할 때 문제가 발생하니 찾아보시길..



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

: 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야한다. = 클라이언트는 자신이 사용하는 메서드에만 의존해야한다.

 

의존 역전 원칙 (Dependency Inversion Principle : DIP)

: 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다. 저수준 모듈이 고수준 모듈에서 정의한 추상타입에 의존해야한다.

  고수준 모듈은 단일 기능을 제공하는 모듈이고, 저수준 모듈은 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현으로 정의할 수 있다.

예) 고수준 모듈 : 바이트 데이터를 읽어와 암호화하고 결과 바이트 데이터를 쓴다.

    저수준 모듈 : 파일에서 바이트데이터를 읽어온다.

암호화 알고리즘으로 암호화한다.

파일에 데이터를 쓴다.


SOLID 원칙은 변화에 유연하게 대처할 수 있는 설계 원칙으로 정의할 수 있다. 또한, SOLID 원칙은 사용자 입장에서의 기능사용을 중시한다.


출처 : 

개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 / 최범균 저자 / 인투북스 출판사


반응형
Comments