SOLID원칙

SOLID  원칙

1.  단일 책임의 원칙 (SRP : Single Responsibility Principle)
   객체는 하나의 책임 – 억지로 나누지는 말것
   마치 DB의 정규화 와도 비슷하다. 더 좋은것은 성능저하라는 부작용이 없다.

2.  개방폐쇄 원칙 (OCP : Open – Close Principle)
   모듈은 확장에는 열려고 변경에는 닫혀있어야 함
   즉 메소드 단위의 오버라이딩, command 등을 이용한 확장 포인트를 두어 확장이 용이해야 한다.
   기본 코드에는 손을 대지 않고 시스템을 수정할 수 있어야 한다. => if/switch보다는 다형성을 활용.

3. 리스코프 대체 원칙 (LSP : Liskov Substitutuin Principle) 

   슈퍼 클래스는 파생 클래스로 대체 가능해야 한다. 즉 인터페이스만 알면 구현체를 몰라도 사용 가능해야
  무분별한 상속을 방지하기 위해서 검증해야 함


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

   각 클라이언트에 특화된 인터페이스를 작성함.  여러개의 인터페이스가 하나의 범용 인터페이스보다 낫다.
   (범용 인터페이스인 "그루비 클로저"와는 용도가 다름)

5.  의존 관계 역전의 법칙 (DIP : Dependency Inversion Principle)

  클라이언트는 구체 클래스가 아닌 인터페이스나 추상 클래스에 의존해야 한다.

    => 변화의 충격에서 좀더 자유로울 수 있다. 즉 Bridge패턴 처럼 인터페이스/추상 클래스 끼리만 서로 의존관계를 가지며 참조하자는 이야기이다. 


http://davesquared.net/2009/01/introduction-to-solid-principles-of-oo.html



'Architecture > Design Pattern' 카테고리의 다른 글

패턴의 구성  (0) 2012.11.13
architecture pattern  (0) 2012.10.23
Double Dispatch and Visitor pattern  (0) 2012.10.18
리팩토링 요약  (0) 2012.05.20
SOLID원칙  (0) 2012.05.13
Design Pattern 요약파일  (0) 2010.03.13