객체지향의 원칙

디자인패턴로그 2011. 8. 17. 23:01




디자인 패턴에 대한 학습에 앞서 객체지향적인 소프트웨어 설계를 위한 5가지 원칙에 대해 알아보자. 
앞으로 소개할 5가지의 원칙보다 가장 우선시 되는 원칙은 "고객의 요구사항 만족의 원칙" 일 것이다.
다른 모든 원칙은들은 이 원칙에 의해 조정되고 필요할 때는 무시될 수 있다. 

소프트웨어 설계를 하다보면 어떻게 설계하는 것이 더 좋을까? 는 의문이 점점 더 짙어질 것이다.
이때 5가지 원칙을 지침삼아 결정하도록 하자...



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

   확장에는 열려있고, 변경에는 닫혀있도록 설계하라는 원칙이다. 
    > 변하는 사항들을 잘 캐치하여 이러한 부분들에 대한 확장점을 고려하여 설계를 하되, 명시적으로 제공하지 않는
      인터페이스를 통해 클래스가 변경되지 않도록 반드시 필요한 인터페이스만 노출하여 잘 캡슐화 하라는 의미이다. 


  

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

 수퍼클래스가 사용된 자리를 서브클래스로 대체하여도 잘 작동해야 한다는 원칙이다. 
    > 객체지향 언어의 상속과 인터페이스 메커니즘이 이를 잘 지원하고 있다. 




3. 의존관계 역전의 원칙 (DIP - Dependency Inversion Principle)

   구체적인 것이 아닌 추상적인 것에 의존하게 하라는 원칙이다. 
    > 추상적인 것에 의존하게 되면 LSP에 따라 구현체를 교체할 수있으며 그만큼의 유연성을 얻을 수 있다. 




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

   하나의 일반적인 인터페이스 보다는 다수의 구체적인 인터페이스를 사용하라는 원칙이다.    
    > 인터페이스를 세부적으로 분리하면 다양한 인터페이스 조합을 갖는 유연한 클래스를 사용할 수 있기 때문이다. 


     

5. 단일 책임의 원칙 (SRP - Single Responsibility Principle)

   하나의 클래스는 타당한 하나의 책임만을 담당해야 한다는 원칙이다.
    > 클래스가 방대해져서 복잡해지는 것을 막기 위해 오직 한가지 책임에 전념하라는 원칙이다. 다양한 역할을 하는 하나의
      클래스 보다는 서로 다른 역할을 하는 여러 클래스를 선호하라는 의미이다.  




 

'디자인패턴로그' 카테고리의 다른 글

객체지향의 원칙  (0) 2011.08.17
알고리즘과 데이터 구조 그리고 패턴  (0) 2011.08.16
디자인 패턴에 대한 고찰  (0) 2011.08.16