1.
단일 책임의 원칙 (SRP : Single Responsibility Principle)
1.객체는 하나의 책임만을 맡아야 한다. - 억지로 나누지는 말것
2.마치 DB의 정규화 와도 비슷하다. 더 좋은것은 성능저하라는 부작용이 없다.
2.
의존 관계 역전의 법칙 (DIP : Dependency Inversion Principle)
1.클라이언트는 구체 클래스가 아닌 인터페이스나 추상 클래스에 의존해야 한다. => 변화의 충격에서 좀더 자유로울 수 있다.
2.즉 Bridge패턴 처럼 인터페이스/추상 클래스 끼리만 서로 의존관계를 가지며 참조하자는 이야기이다.
3.모든 클래스에 인터페이스를 만들면 클래스가 엄청나게 늘고 복잡해 진다. 필요한것만 만들자.
3.
인터페이스 분리의 법칙 (ISP : Interface Segregation Principle)
1.클라이언트에 특화된 여러개의 인터페이스가 하나의 범용 인터페이스보다 낫다.
2.범용 인터페이스인 "그루비 클로저"와는 용도가 다르다.
4.
리스코프 대체 원칙 (LSP : Liskov Substitutuin Principle)
1.기반 클래스는 파생 클래스로 대체 가능해야 한다. 즉 인터페이스만 알면 구현체를 몰라도 사용 가능해야 한다.
2.따라서 자식이 부모의 유산을 거부해서는 안된다. (제공하는 서비스가 다르면 안된다)
3.계층 구조가 폭주하는것을 막기 위해 Decorator패턴을 사용한 비LSP가 나오기도 한다. (UnmodifiableList 등)
5.
개방폐쇄 원칙 (OCP : Open - Close Principle)
1.모듈은 확장에는 열려있어야 하고 변경에는 닫혀있어야 한다.
2.즉 메소드 단위의 오버라이딩, command 등을 이용한 확장 포인트를 두어 확장이 용이해야 한다.
3.기본 코드에는 손을 대지 않고 시스템을 수정할 수 있어야 한다. => if/switch보다는 다형성을 활용.
'관심 거리 > 정보기술' 카테고리의 다른 글
| 객체지향 설계 5원칙 - SOLID (0) | 2011/07/04 |
|---|---|
| 디지엠정보기술(주) (0) | 2010/02/21 |
| 간단하게 정보 및 지식 검색시스템 구축하기 (0) | 2008/12/30 |
| 정보 분류와 습득 (0) | 2008/12/30 |
| How to make a BristleBot - Evil Mad Scientist Laboratories (0) | 2008/03/29 |
| IPhone Developer Connection (1) | 2008/03/29 |