[DP] 13. Flyweight 패턴 - 37 분

[구성]
[Session 1] Part1. Orientation 1
[Session 1] Part2. Orientation 2
[Session 1] Part3. Abstract Factory 패턴
[Session 1] Part4. Builder 패턴
[Session 1] Part5. Factory Method 패턴
[Session 1] Part6. Prototype 패턴
[Session 1] Part7. Singleton 패턴
[Session 2] Part1. Adapter 패턴
[Session 2] Part2. Bridge 패턴
[Session 2] Part3. Composite 패턴
[Session 2] Part4. Decorator 패턴
[Session 2] Part5. Facade 패턴
[Session 2] Part6. Flyweight 패턴
[Session 2] Part7. Proxy 패턴
[Session 3] Part1. Chain of Responsibility 패턴
[Session 3] Part2. Command 패턴과 Template Functor
[Session 3] Part3. Interpreter 패턴
[Session 3] Part4. Iterator 패턴
[Session 3] Part5. Mediator 패턴
[Session 3] Part6. Memento 패턴
[Session 4] Part1. Observer 패턴
[Session 4] Part2. State 패턴
[Session 4] Part3. Strategy 패턴
[Session 4] Part4. Template Method 패턴
[Session 4] Part5. Visitor 패턴
[Session 4] Part6. 디자인 패턴 요약 및 적용 방안

[문제 사례 설명]


[목적]
text 편집기에서 이미지를 읽어드린다고 할때 실제 디스크에서 이미지를 읽을 지 말지 결정하는 것..
객체에 대한 접근을 제어하기 위해 사용된다. Decorator 패턴은 객체의 역할이나 기능을 추가하기 위해 사용.

decorator 패턴과 뭐가 다른가?
=> 클래스 구조상에 반복하는 것이 없다.
=> 목적을 대답해야 된다. 클래스 구조도 바뀌는 것도 중요하지만, 목적에 비해 사소하다.
=> decorator 동적으로 기능을 추가하거나 삭제 하는것이고,
=> proxy 패턴 너대신 내가 가로채서 다해줄께. (기능의 추가가 일어날 수 있겠지만, 동일한 인터페이스에서 ... 구현하는 것)


remote proxy 패턴 -서로 다른 machine간 공유할때.
virtual proxy 패턴 - 객체를 생성하는 데 비용이 많이 드는 경우 꼭 필요로 하는 시점까지 객체의 생성을 미루고 대신 해당 객체가 생성된 것처럼 동작
protection proxy 패턴 - 접근을 제어해준다.
smart reference 패턴 - 일반적인 포인터에 추가적인 기능을 부여하고자 할 경우

smart point




[해당 패턴 설명]


[활용한 패턴 정리]


[강사분 이야기 이야기...]

한미르 만화 서비스 공짜 ... 강사가 구현했다.
3천만 뷰 정도 나온다고 한다..

이것을 어떻게 구현해야 할까? 디스크에서 읽어 드려 서비스 한다면 ... 독자가 느려서 읽지도 않을뿐더러 하드디스크 수명도...

웹서버가 request 온 것을 램이 많은 128GB-500GB  서버에서 만화를 메모리에 읽어드린다. ... LRU 메모리에서 바로 만화를 보여주는 것... 만화 잘보는 사람은 최근 만화를 본다.
어쩌다 들어온 사람인 경우는 오래된 만화를 보겠지만.

이런 식으로 아예 장비를 판다. 이것도 패턴으로 본다면 proxy 패턴으로 볼 수 있다.


[소프트웨어 공학에 대한]
옛날에는 도자기 만드는 것을 특정 기술자만 만들었는데, 양산하는데 제한 있다. 이것을 어떻게 할 것인가... 기술자만큼은 못되더라도 어느정도 품질안에서 만들어지는 것

특정기술자가 새로운 것을 만드는 것도 빠르지만, ... 기술자가 갑자기 죽을 경우 기술 단절...

정형화시켜서 일반적인 기술자의 질도 표준 수준은 되지 않을것인가 ... 이런 것으로 DP가 나왔다고 볼 수 있겠다.

현업의 업무와 비슷하게 적용할 것이... MFC도 적용하고 있다... 상용라이브러리 ... 보면 DP내용이 다 나온다. 일반적인 포괄적인 문제나 자주 접하게 되는 문제를 Pattern화 시켜봐서 사용해보니 이방법이 낫더라. 그러니 일반기술자 들은 이것보고 대충 이라도 만들어 ... 품질이 좋아지고 ... 비슷한 문제를 접했을때 빨리 개발 할 수 있다. 이런 의미에서 DP를 배우는 것이다.

DP - best practice !!

과정을 따라가보면 자신의 Pattern을 만들 수 있는 것이다.

패턴의 활용도를 높이려면 자신의 문제에 적용해보고 풀어봐야 된다. 내가 풀지 않았던 문제도 나오기 때문에 ... 특정 부분에 대한 문제만 나온다. 실제 프젝에서는 복합적인 문제가 나온다.
작은 문제를 푸는 것도 못하면 큰문제를 풀지 못한다. 큰 문제를 쪼개는 방법도 알아야 한다. 그것을 아키텍쳐 설계라던지 ... 개발과정에 오면서 쪼개져야 한다.
Posted by iarchitect Trackback 0 : Comment 0