Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

예제로 보는 Pattern 연상법

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

  • Login to see the comments

예제로 보는 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 />

×