1. What is Design Pattern
디자인 패턴은 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 설계 디자인 방법론이다.
디자인패턴에서 좋은 코드라는것은, "설계적인 관점에서 좋은코드" 를 말한다
확장과 수정이 용이하며, 설계 이후에도 추가적인 유지보수 비용이 적게 들어가는것을 디자인패턴에선 좋은 코드라 부른다
객체지향적인 관점에서 볼 때, 이를 기반으로한 설계 방향성은
"객체간의 응집도는 높이고, 결합도는 낮추며, 요구사항 변경시 코드 변경을 최소화 하도록 설계해야한다"
라고 볼 수 있다.
이에 대해서, 객체지향에서는 SOLID 라는 원칙을 제시한다.
2. SOLID Principle
: SOLID 원칙이라는것은 객체지향 5대원칙으로도 불리고, 다음의 5가지 원칙들을 의미한다.
1) SRP (Single Responsibility Principle) : 단일 책임 원칙
-> 클래스나 함수가 하나의 기능만을 가져야 한다는 원칙이다.
-> 클래스나 함수가 너무 커지면, 이를 별도의 클래스나 함수로 분할해서 관리해야한다
2) OCP (Open-Closed Principle) : 개방 - 폐쇄 원칙
-> 기존 코드 변경에는 닫혀 있고, 추가나 확장에는 열려 있어야한다.
-> 자주 변경될 수 있는 내용들은 수정하기 쉽게 설계해야하고, 자주 변경되지 않을 내용들은 수정에 영향 받지 않도록 설계해야한다.
3) LSP (Liskov Substitution Principle) : 리스코프 치환 원칙
-> 자식 클래스는 부모 클래스에서 가능한 행위를 수행할 수 있어야한다.
-> 즉 올바른 상속 관계를 유지하고 있는지 생각해봐야한다.
4) DIP (Dependency Inversion Principle) : 의존 역전 원칙
-> 의존관계를 맺을때, 변화하기 쉬운것 보다는 변화하기 어려운것에 의존해야한다.
-> 변화하기 쉬운것이란, 구체적인 대상들을 말하고, 클래스나 서브 클래스 인스턴스 등이 해당된다
-> 변화하기 어려운것이란 추상적인 것들을 말하며, 추상 클래스 인터페이스 등이 해당한다
-> 인터페이스나 추상 클래스가 더 상위 객체로 있어야 한다는의미
-> 이는 의존성 주입 기술의 원칙이됨.
5) ISP (Interface Segregation Principle) : 인터페이스 분리 원칙
-> 클라이언트가 자신이 이용하지 않는 메소드에 의존하면 안된다
-> 큰 덩어리의 인터페이스들을 구체적이고 작은 단위로 분리시켜서, 클라이언트가 꼭 필요한 메소드만 사용하게 한다.
3. UML
디자인패턴에서 설계 방식을 표현할때는 기본적으로 UML 을 이용해서 표현하는데,
기본적인 표기 방법은 아래의 링크 참조.
'Java > 디자인패턴' 카테고리의 다른 글
Design Pattern - Adapter Pattern (0) | 2021.02.25 |
---|---|
Design Pattern - Strategy Pattern (0) | 2021.02.23 |