Linkedin Learning - Programming Foundations: Design Patterns 후기
링크드인 러닝에서 디자인 패턴에 대한 강의를 수강 하였다.
디자인 패턴에 대하여 개략적으로만 알고 있을 뿐, 이번에 제대로 좀 보자고 생각하여서 보게 되었다.
회사마다 다르고, 팀마다 다르겠지만 우리 팀에서는 MVC Framework의 패턴을 따르고만 있을 뿐 디자인 패턴을 적용하고 있지 않다.
업무가 바빠서일 수도 있고, 디자인 패턴을 적용하는것과 거리가 먼 외주 코드들이 많아서 그럴 수도 있다.
명백히 외주 계약에 디자인 패턴이 있지는 않기 때문..
하지만 못쓰더라도 아는게 좋다고 생각 한다. 또한 자바의 Spring 코드를 까보면 여러 디자인 패턴의 결합체임을 알 수 있기에 좋은 공부라고 생각 한다.
디자인 패턴 강의 저자
링크드인 러닝과 같은 온라인 course의 특성상 내가 하고 싶으면 강의를 만들 수 있다. 이는 자칫 잘못하면 전문성이 떨어질수도 있는 점이 있다. 하지만 이 강의의 저자들은 Oreilly의 Head First Design을 작성한 저자이기 때문에 그런 걱정은 필요 없다.
강의 내용 - 6개의 패턴
해당 강의에서는 6개의 패턴을 공부 한다. Head First Design Pattern의 서적에는 약 20여가지의 패턴이 있으며 거기에서 6개를 뽑으신것 같다. 그냥 강의를 1,2,3 나누더라도 모든 강의를 올리는게 어땠을까 생각이 들긴 하지만, 대표적인 패턴을 배운 후 나머지들은 책을 통해서 확인하게 하는 의도라면 이해가 된다.
1. Strategy Pattern
함수의 interface를 통해서 객체를 상속하는 것이 객체 지향의 core중 하나 이다. 하지만 상속을 통해서 함수를 명세하는 것의 단점이 있는데 이는 모든 객체에서 해당 함수를 구현해야 한다는 점이다. 아무런 차이가 없더라도 일단은 따로따로 구현해야하는 점이 있으며 이를 재사용성이 좋게 하기 위해서 Composition이라고 하여 해당 기능을 하는 함수를 따로 클래스로 두어서 사용하는 것 이다.
IS-A 관계에서 HAS-A 관계로 변경이 되며 재사용성이 좋아지는 점이 있다.
2. Adapter Pattern
서로 다른 클래스의 함수를 사용해야 할때 함수의 형태가 다를 경우 Adapter라는 클래스를 두어서 함수를 변환하여 동일하게 한다. 이를 Adapter 패턴이라고 한다.
3. Observer Pattern
1-many 관계를 가지는 객체들이 있을때 1에서 many들을 호출해서 실행하게 해야하는 경우 Observer 패턴을 사용하면 된다. one인 Publisher가 notify하면 이를 기다리고 있는 Subscriber들이 확인해서 각자의 함수를 실행 한다. 이벤트 기반 프로그래밍이 여기서 나오는건가 싶다.
4. Decorator Pattern
전체 클래스가 아닌 일부 클래스에 기능이 추가가 될경우 중간에 Decorator 클래스를 두어서 구현 한다.
5. Iterater Pattern
단순 for문을 사용하는 것에 더 나아가 iteration 로직과 aggregation로직을 분리 한다. 객체의 내부 연산을 직접 구현하지 않고, next()와 같은 연산을 통해서 통일 한다.
6. Factory Pattern
직접 객체를 생성하지 않고 Factory라는 클래스를 두어서 해당 클래스를 통해 생성하는 방법이다. 생성할 객체를 내가 직접 결정하지 않고 함수에 이관한다. 이는 다르게 사용시 싱글턴이라던가 객체의 갯수를 조절하는 등의 여러가지 방식을 사용 할 수 있다.
댓글
댓글 쓰기