예제로 보는 Pattern 연상법

4,262 views

Published on

2010년 아꿈사 4번째 스터디 시작발표
예제로 보는 Pattern 연상법

Published in: Technology
0 Comments
16 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,262
On SlideShare
0
From Embeds
0
Number of Embeds
362
Actions
Shares
0
Downloads
1
Comments
0
Likes
16
Embeds 0
No embeds

No notes for slide

예제로 보는 Pattern 연상법

  1. 1. 예제로 보는 Pattern 연상법우리에겐 Pattern 길잡이가 있다<br />아키텍트를 꿈꾸는 사람들(http://cafe.naver.com/architect1)<br />현수명 (http://soomong.tistory.com)<br />
  2. 2. <ul><li> 어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />
  3. 3. <ul><li> 어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />
  4. 4.
  5. 5.
  6. 6. 생성<br />Pattern<br />구조<br />Pattern<br />행위<br />Pattern<br />GoF의 디자인 패턴<br />-피어슨에듀케이션코리아<br />
  7. 7.
  8. 8. 연상<br />
  9. 9. Picture Superiority Effect<br />그림 우월성 효과<br />한 장의 그림이 천 단어의 말과 같다는 말이 있는데, 이 말은 사실이다. <br />비록 그림과 단어를 함께 사용한 기억이 <br />단어나 그림만을 홀로 이용한 기억보다 더 기억에 잘 남지만, <br />그림이 일반적으로 단어보다 더 쉽게 인지되고 기억이 더 잘 나게 한다. <br />그림 우월성 효과는 정보의 쉽고 정확한 기억이 필요한 교수 설계, 광고, 기술 문서나 <br />그 밖에 다른 디자인 환경에 일반적으로 사용된다. - 본문 152쪽 중에서<br />디자인 불변의 법칙 100가지<br />-고려문화사 <br />
  10. 10. Pattern 연상<br />이렇게 한번 해보는건 어떨까요?<br />Pattern 길잡이의 이미지 떠올리기<br />2. 이미지로부터 Pattern 이 하는일 연상하기<br />3. Pattern 길잡이의 UML 을 생각하기<br />3. Pattern 길잡이의 example 코드를 생각하기<br />OR<br />
  11. 11. Pattern 길잡이의<br />이미지 떠올리기<br />패턴을 이미지로 <br />설명해놓은 책<br />Bridge Pattern<br />Chain of Responsibility <br />Pattern<br />2. 이미지로부터 Pattern 이 하는일 연상하기<br />
  12. 12. Design Pattern Card<br />3. Pattern 길잡이의 <br /> UML을 생각하기<br />
  13. 13. Wikipedia<br />3. Pattern 길잡이의 <br />example 코드를 생각하기<br />Bridge Pattern<br />
  14. 14. 자!<br />몇개만 <br />해볼까요?<br />
  15. 15. Memento Pattern<br />Pattern 길잡이의<br />이미지 떠올리기<br />Pattern길잡이<br />2. 이미지로부터 Pattern 이 하는일 연상하기<br />
  16. 16. Memento Pattern<br />3. Pattern 길잡이의 <br /> UML을 생각하기<br />Pattern길잡이<br /> Design Pattern Card<br />
  17. 17. 3. Pattern 길잡이의 <br />example 코드를 생각하기<br />Memento Pattern<br />Pattern길잡이<br />Wikipedia<br />
  18. 18. 하나만 더<br />해볼까요?<br />
  19. 19. Abstract Factory<br />Pattern<br />Pattern 길잡이의<br />이미지 떠올리기<br />Pattern길잡이<br />2. 이미지로부터 Pattern 이 하는일 연상하기<br />
  20. 20. Abstract Factory<br />Pattern<br />3. Pattern 길잡이의 <br /> UML을 생각하기<br />Pattern길잡이<br /> Design Pattern Card<br />
  21. 21. Abstract Factory<br />Pattern<br />3. Pattern 길잡이의 <br />example 코드를 생각하기<br />Pattern길잡이<br />Wikipedia<br />
  22. 22. <ul><li> 어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 <br />바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />
  23. 23. 소스분석중 Pattern 연상<br />귤까기와 패턴<br />소스의 구조를 직접 그려보고 <br />Pattern길잡이와 비교해가면서 찾는다.<br />소스를 통해 구조를 그려보면<br />패턴이 떠오른다<br />소스를 보는 순간 <br />패턴이 떠오른다.<br />
  24. 24. 소스분석중 Pattern 연상<br />이렇게 한번 해보는건 어떨까요?<br />소스의 구조를 직접 UML 로 그려본다<br />2. Pattern 길잡이와 하나하나 비교해본다<br />
  25. 25. 자!<br />이번에도 <br />해볼까요?<br />
  26. 26. Pattern in Android<br />소스에서 패턴 연상하기<br />Pattern<br />
  27. 27. Pattern<br />
  28. 28. Pattern<br />
  29. 29. Pattern<br />생성패턴? View 를 생성하자너 -_-;<br />행위패턴? 이름이 strategy 라서 -_-;<br />Pattern길잡이<br /> Design Pattern Card<br />
  30. 30. Strategy Pattern<br />
  31. 31. Strategy Pattern<br />Strategy Pattern<br />
  32. 32. <ul><li> 어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />
  33. 33. Refactoring 중 Pattern 연상<br />이렇게 한번 해보는건 어떨까요?<br />코드의 냄새를 찾고<br />(필요하면 UML 로 냄새를 맡아보고)<br />2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br />적절한 해결 Pattern 을 찾는다.<br />3. 해결 Pattern 을 적용해서 <br /> 냄새가 사라졌는지 확인해본다<br />
  34. 34. 자!<br />냄새를 <br />맡으러!<br />
  35. 35. Pattern<br />코드의 냄새를 찾고<br />(필요하면 UML 로 냄새를 맡아보고)<br />어디선가 이기적인 냄새가 난다<br />각각의 draw 함수마다<br />그에 맞는 다른 인자를<br />알아서 센스있게 넣어주어야 한다<br />
  36. 36. 2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Pattern<br />[냄새]<br />각각의 draw 함수마다<br />그에 맞는 다른 인자를 넣어주어야 한다<br />[해결]<br />구조를 바꿔서 같은 인자를 넣어도<br />알아서 처리해주도록 하자<br />랩을 한번 씌울까?<br />구조패턴?<br />Pattern길잡이<br /> Design Pattern Card<br />
  37. 37. Adapter Pattern<br />2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Adapter Pattern<br />
  38. 38. Adapter Pattern<br />2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />
  39. 39. Adapter Pattern<br />3. 해결 Pattern 을 적용해서 <br /> 냄새가 사라졌는지 확인해본다<br />
  40. 40. Adapter Pattern<br />3. 해결 Pattern 을 적용해서 <br /> 냄새가 사라졌는지 확인해본다<br />
  41. 41. 자!<br />xUnit Test Pattern <br />한번 해볼까요?<br />
  42. 42. <ul><li> 어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />Test Code<br />
  43. 43. Pattern<br />테스트 코드의 냄새를 찾고<br />(필요하면 UML 로 냄새를 맡아보고)<br />어디선가 욕심쟁이의 냄새가 난다<br />하나의 테스트메소드에서 <br />너무 많은 기능을 검증하려 한다<br />
  44. 44. 2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Pattern<br />[냄새]<br />하나의 테스트메소드에서 <br />너무 많은 기능을 검증하려 한다<br />Pattern길잡이<br />xUnit테스트 패턴<br />-에이콘 <br />
  45. 45. 2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Single Condition Test<br />욕심쟁이 테스트<br />[원인]<br />하나의 테스트 메소드에서 <br />너무 많은 기능을 검증하려는 테스트<br />[해결책]<br />단일조건 테스트 스위트로 만들것!<br />Single Condition Test<br />테스트별로 하나의 조건만 검증하라<br />
  46. 46. Single Condition Test<br />3. 해결 Pattern 을 적용해서 <br /> 냄새가 사라졌는지 확인해본다<br />Single Condition Test<br />테스트별로 하나의 조건만 검증하라<br />
  47. 47. xUnit Test Pattern<br />
  48. 48. One More?<br />
  49. 49. Pattern<br />테스트 코드의 냄새를 찾고<br />(필요하면 UML 로 냄새를 맡아보고)<br />어디선가 변덕스러운 냄새가 난다<br />테스트가 변덕을 부린다.<br />어떨때는 통과하고 어떨때는 실패한다.<br />
  50. 50. 2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Pattern<br />[냄새]<br />테스트가 변덕을 부린다.<br />어떨때는 통과하고 <br />어떨때는 실패한다.<br />Pattern길잡이<br />xUnit테스트 패턴 <br />-에이콘<br />
  51. 51. 2. 냄새를 기준으로 각종 Pattern 길잡이를 통해<br /> 적절한 해결 Pattern 을 찾는다.<br />Fresh Fixture<br />변덕스러운 테스트<br />[원인]<br />공유 픽스처를 쓰면 어떤 테스트가<br />다른 테스트에 영향을 미치게 된다<br />[해결책]<br />신선한 픽스처 를 만들것!<br />Fresh Fixture<br />테스트별로 전용 테스트 픽스쳐를 새로 만들어 쓴다<br />
  52. 52. Fresh Fixture<br />3. 해결 Pattern 을 적용해서 <br /> 냄새가 사라졌는지 확인해본다<br />Fresh Fixture<br />테스트별로 전용 테스트 픽스쳐를 새로 만들어 쓴다<br />
  53. 53. <ul><li>어떻게 하면 패턴과 만난순간</li></ul>이패턴! 아 이거! 하고 <br />바로 생각날수있을까요?<br /><ul><li> 어떻게 하면 소스를 분석할때 </li></ul> 적용된 패턴을 바로 연상할수있을까요?<br /><ul><li> 어떻게 하면 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br /><ul><li> 어떻게 하면 Test Code 리팩토링을 하다가 </li></ul> 이럴때는 이패턴이 딱이야! 하고 <br />바로 떠올릴수있을까요?<br />
  54. 54. 우리의 목적은 Pattern 이 아니다.<br />우리의 목적은 <br /> - 더 좋은 디자인을 설계하는것이고<br /> - 기존의 코드를 더 깊이 이해하는 것이다.<br /> <br />이 목적을 달성하기위해 <br />Pattern 이라는 거인의 어깨위에 <br />올라서는 것 뿐이다.<br />Standing on the shoulders of giants<br />
  55. 55. Refactoring <br />리펙토링을 통해 디자인을 개선하는것은 방대한 주제<br />[필요한 능력]<br />잘못되었다는것을 인지할수있는 능력. <br />즉, 냄새를 맡을수 있는 능력<br />2. 개선방안을 찾아내는 능력. 통찰력.<br />우리에겐 Pattern 길잡이가 있지만, 우선 다 읽어야함. 책 두꺼움.<br />3. 의지<br />
  56. 56. Reference<br />Design Pattern : GoF의 디자인 패턴 – 피어슨에듀케이션코리아<br />Pattern Image : Java 언어로 배우는 디자인 패턴 입문 – 유키히로시<br />Refactoring : Refactoring – 대청<br />Test Code Refactoring : xUnit테스트 패턴 - 에이콘<br />Picture Superiority Effect : 디자인 불변의 법칙 100가지 – 고려문화사<br />Pattern card : http://www.mcdonaldland.info/2007/11/28/40/<br />Android : http://source.android.com/<br />Pattern Example : http://www.wikipedia.org/<br />Pattern Analogy : http://www.vincehuston.org/dp/<br />구구단 : http://k.daum.net/qna/<br />주기율표 :http://gongsin.com<br />
  57. 57. 감사합니다<br />

×