Design Patterns2008. 5. 1. 23:25

시작 하며 ...

요즘 점점 많은 개발자들이 객체지향 설계에 디자인 패턴을 적용한다. 설계시 뿐만 아니라 리펙토링 에도 많이들 적용한다. 이러한 패턴을 공부하다보면 알게 모르게 먼가 기본이되는 원칙이 있을거 같은 느낌이 든다.
(나만 드나 ? ㅡㅡ) 하여튼 나는 그런 느낌이 들었다. 그런데 정말 그런 원칙이 있단다. 그래서 그 원칙들을 정리해 볼까 한다.

DataBase 설계시 정규화 라는것이 있다. 이것도 아마 5가지 이다.(맞나 ?)  정규화라는 것은 DataBase 설계시 가이드라인이 되어주는 방법이다. 물론 이 가이드라인이 어느 상황에나 유리한 절대 불변의 법칙은 아니다. 어떨때는 이런 정규화 때문에 성능상 더 나쁜 영향을 줄수도 있다. 그래서 이럴대 비정규화를 사용하여 정규화를 원칙을 깨버린다. 객체 지향 설계 원칙도 이와 같다. 더 좋은 설계를 위해서는 굳이 원칙을 따를 필요가 없다. 그리고 5가지 원칙을 사용하다보면 서로 상호 배타적인 것도 있어서 5가지 원칙을 모두 따르는것이 불가능할 때도 있을것이다.

% OCP (Open-Close Principle): 개방-폐쇄의 원칙
% LSP (Liskov Substitution Principle): 리스코프 교체 원칙
% SRP (Single Responsibility Principle): 단일 책임의 원칙
% DIP (Dependency Inversion Principle): 의존 관계 역전 원칙
% ISP (Interface Segregation Principle): 인터페이스 격리 원칙

약자를 풀어보면 대충 감이 오는것도 있고 안오는것도 있을 것이다.
하여튼 이 5가지 원칙을 하나씩 정리해 보도록한다.

Posted by 상현달