
디자인 패턴이란?
디자인 패턴은 개발을 진행함에 있어 질 좋은 코드를 설계하기 위한 방법론이다.
질 좋은 코드는 수정과 변경이 용이하며, 모듈간의 응집도는 높고, 결합력은 낮은
덧붙여 확장에도 용이한 코드가 질이 좋은 코드라고 말할수있겠다
이러한 디자인 패턴을 만들기 위해서 최소한의 룰이 있는데,
객체지향 5대 원칙이라는 친구를 최소한으로 보장해주는것에서 시작한다
객체지향 5대 원칙(SOLID)
단일 책임 원칙 (Single Responsiblity Principle, SRP)
- 디자인 패턴의 모든 모듈은 단 하나의 책임을 가져야 한다
- 복합적인 모듈은 분리시킬 필요가 있다
개방/폐쇄 원칙(Open/Closed Principle, OCP)
- 모듈 자체의 확장성을 키우되, 변경이 없을 모듈은 폐쇄적으로 만들어야 한다
- 뼈대 코드 변경에는 닫혀있고, 추가&확장에는 열려있어야 한다
리스코프 치환 원칙(Liskov Substitutions Principle, LSP)
- 부모 클래스와 자식 클래스 사이의 행위에는 일관성이 있어야 한다
- 인터페이스만 알면 구현체를 몰라도 사용 가능해야 한다
- 자식 클래스의 상세 내용을 부모 클래스는 알 필요가 없다
- 상속 관계에서 IS-A 관계가 성립해야 한다
- IS-A :: 한 클래스 A가 다른 클래스 B의 서브클래스이다
인터페이스 분리 원칙(Interface Segregation Principle, ISP)
- 하나의 광범위한 인터페이스 보다 여러개의 구체적인 인터페이스가 낫다
- 인터페이스를 최소 단위로 분리시켜서 필요한 메소드로만 사용하게 만든다.
의존성 역전 원칙(Dependency Inversion Principle, DIP)
- 의존 관계를 정할 때 불변성이 강한 것(추상 클래스)에 의존해야 한다.
- 상위 모듈은 하위 모듈에 종속되어서는 안된다
- 추상화는 세부사항에 의존하지 않는다
SOLID원칙을 만족하는 다양한 패턴들은 다음 장에서 서술하겠습니다.