miss_pattern_v2
DESCRIPTION
miss pattern v2TRANSCRIPT
![Page 1: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/1.jpg)
미워도 다시 보는 패턴 이야기.
![Page 2: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/2.jpg)
EvaCast 리더http://www.evacast.net데브피아 아키텍쳐 시삽
Blog - 아키텍트로 가는 길.http://www.arload.net
![Page 3: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/3.jpg)
오늘 나눌 이야기 거리들.
패턴의 정의 (패턴이란?)
패턴에 대핚 오해와 짂실
패턴으로 가는 길
패턴 구성요소 바로 알기
패턴의 올바른 학습 가이드라인
![Page 4: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/4.jpg)
1. 도대체..
패턴은 무엇일까?
![Page 5: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/5.jpg)
Pattern
is
Father
![Page 6: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/6.jpg)
우리는 아버지와 비슷한
생김새, 성격, 습관 등을
가지고 있다.
![Page 7: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/7.jpg)
![Page 8: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/8.jpg)
이미 해결한 문제와
유사한 문제들은..
유사한 방법(패턴)으로
해결 할 수 있다.
![Page 9: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/9.jpg)
그럼 패턴은 과연..
왜 내가 적용하려면
안될까?
![Page 10: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/10.jpg)
2. 패턴에 대한 오해와 진실
![Page 11: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/11.jpg)
GoF 23개의 Pattern으로
우아한 프로그램 만들기?
![Page 12: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/12.jpg)
지구상의 패턴들..
+ 논문 형태로 발표된
패턴 몇 백개.
![Page 13: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/13.jpg)
패턴은 섬이 아니다.
![Page 14: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/14.jpg)
ConfigurablePart
VariablePart
Component Configurator
Factory
Strategy
<<LINKS>>
<<CREATES>>
CommonPart
(Modularity)
Log
Security
Transaction
여러 개의
패턴이 뭉쳐서 움직인다.
![Page 15: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/15.jpg)
여러 개의
패턴이 뭉쳐서 움직인다.
![Page 16: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/16.jpg)
패턴은 소프트웨어 설계
쪽만 다룬다?
![Page 17: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/17.jpg)
솔로들을 위한 패턴?
http://www.amazon.com/Dating-Design-Patterns-Solveig-Haugland/dp/0974312002/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1239125189&sr=8-1
![Page 18: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/18.jpg)
조직을 변화시키는 패턴.
Linda Rising과 Fearless Change 책 소개 –
http://arload.wordpress.com/2009/09/18/plop-linda-rising-fearless-change/
새로운 생각을
조직에 전파하는
48가지의
패턴과 패턴 언어들.
![Page 19: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/19.jpg)
소프트웨어 관련된모든 행위들을 다룬다.
팀을 이루어 설계 대련을 수행하는 패턴 http://portal.acm.org/citation.cfm?id=273484
팀 생산성을 향상 시키는 패턴 http://arload.wordpress.com/2008/09/02/teamproductivity/
지리적으로 떨어져 있는 팀 협업하는 패턴 http://hillside.net/plop/2006/Papers/Library/patternstoenablePLoP2006_sub
mission_v4.pdf http://hillside.net/plop/2004/papers/vbricout0/PLoP2004_vbricout0_0.doc
효율적인 회의를 이끄는 패턴 http://hillside.net/europlop/europlop2005/workshops/
+ 그 외에도 기타 등등….http://arload.wordpress.com/2008/04/02/plopfestival/
![Page 20: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/20.jpg)
패턴은 만병통치약?
![Page 21: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/21.jpg)
비약적인 성능 향상 ?
생산성 증대 ?
최적화 ?
심지어 Silver Bullet ??
![Page 22: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/22.jpg)
패턴의 장점은..
유연성 확장성
![Page 23: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/23.jpg)
3. 패턴으로 가는 길...
![Page 24: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/24.jpg)
패턴에 대한 올바른 마음가짐
![Page 25: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/25.jpg)
아키텍쳐의 이해 대상
Martin Fowler says …
The expert developers working on that project have
a shared understanding of the system design.
This shared understanding is called ‘architecture’
http://www.martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
![Page 26: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/26.jpg)
역시 패턴도..
팀 내 의사 소통의 수단이
되기 위해선,
팀원들의 이해가 필요하다.
![Page 27: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/27.jpg)
선무당이 사람 잡는다.
해당 그림 추가
![Page 28: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/28.jpg)
패턴의 남용.
리소스 제약이 심한 시스템에
유연성 추가하기??
- Pipe & Filter
- Component Configurator
![Page 29: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/29.jpg)
패턴의 가족관계를 찾아라!
![Page 30: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/30.jpg)
Compound Pattern
versus
Composite Pattern
![Page 31: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/31.jpg)
ConfigurablePart
VariablePart
Component Configurator
Factory
Strategy
<<LINKS>>
<<CREATES>>
CommonPart
Log
Security
Transaction
전형적인 가족관계
![Page 32: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/32.jpg)
여러분을 위해
하나씩 나누어
설명드리겠습니다.
![Page 33: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/33.jpg)
satellite SuperComputer
인공위성과슈퍼 컴퓨터의 정렬로직은 같을까요?
Strategy
![Page 34: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/34.jpg)
void main()
{
//pSort라는 인터페이스를 선언핚다
ISort iSort;
if (GetSystemInfo() == Low)
{
//인공위성에서는 Bubble Sorting 사용
iSort = new CBubble();
}
else
{
//슈퍼 컴퓨터에는 Quick Sorting 사용
iSort = new CQuick();
}
iSort.Sorting();
}
ISort
+Sorting()
Bubble
+Sorting()
Quick
+Sorting()
Strategy
![Page 35: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/35.jpg)
ODBC(JDBC) API
Application
ODBC (JDBC) Driver Manager
MSSQL Driver Oracle Driver
Template Method
![Page 36: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/36.jpg)
QueryTemplate
+doQuery()#FormatConnect()#FormatSelect()
OracleQT
#FormatConnect()#FormatSelect()
SqlSvrQT
#FormatConnect()#FormatSelect()
Class QueryTemplate{ public void doQuery()
{string dbCommand;dbCommand = FormatConnect();dbCommand = FormantSelect(sql);} ...
}
void main(){ //pQT라는 인터페이스를 선언핚다
QueryTemplate QT;Sql sql = “select * from AA”;
if (GetDBProductInfo() = Oracle)QT = new OracleQT();
else QT = new SqlSvrQT();
Qt->doQuery(sql);
}
Inversion of Control(Hollywood Principle)
Template Method
![Page 37: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/37.jpg)
ConfigurationFile
HTTPProtocol
Text Based LogComponent
DESRSA
XML BasedLogComponent
FTP Protocol
설정 파일 정보가 바뀌면소프트웨어의코드 수정없이속성이 변경되어라!!
Great Architect
Component Configurator
![Page 38: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/38.jpg)
38
Component
+Init()+Fini()+Suspend()+Resume()+Info()
CoreComponent
CoreComponent
ComponentRepository
ComponentConfigurator
Component Configurator
![Page 39: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/39.jpg)
10/20/2009Devpia A&D EVA 39
<xml version =“1.0”>
<Components>
<!– Protocol 정보 선택 -->
<Protocol>
HTTP
</Protocol>
<!– Log 정보 선택 -->
<Log>
XML
</Log>
<!– 보안 알고리즘 선택 -->
<SecuAlgorithm>
DES
</SecuAltorithm>
</Components>
void main()
{
IMessage iMessage = new Message();
if (GetComponentInfo(“Protocol”) = HTTP)
iMessage->Protocol = HTTP;
else
iMessage->Protocol = FTP;
if (GetComponentInfo(“Log”) = XML)
iMessage->Protocol = XML;
else
iMessage->Protocol = TEXT;
...
iMessage->Send(“Hello”);}
Advanced TopicReflection
Component Configurator
![Page 40: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/40.jpg)
Component A UserInterface
MetaObject A MetaObject B MOP
Meta Level
Base Level
Component B
uses uses uses uses
modifies
modifies
provides access to
furtherbase-levelcomponents
furthermeta-levelcomponents
retrievesinformation
Reflection
![Page 41: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/41.jpg)
ModuleBuilder AssemblyModule = CreatedAssembly.DefineDynamicModule("MathModule","Math.dll");
TypeBuilder MathType = AssemblyModule.DefineType("DoMath", TypeAttributes.Public | TypeAttributes.Class);
System.Type [] ParamTypes = new Type[] {typeof(int),typeof(int) };
MethodBuilder SumMethod = MathType.DefineMethod("Sum", MethodAttributes.Public, typeof(int), ParamTypes);
ParameterBuilder Param1 = SumMethod.DefineParameter(1,ParameterAttributes.In, "num1");
ParameterBuilder Param2 = SumMethod.DefineParameter(1,ParameterAttributes.In, "num2");
. . .MathType.CreateType(); return CreatedAssembly;
Reflection
![Page 42: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/42.jpg)
using System;using System.Reflection;...
public class EmitDemoTest{ static void Main()
{ ...System.Type MathType = EmitAssembly.GetType("DoMath");object[] Parameters = new object [2];
Parameters[0] = (object) (5); Parameters[1] = (object) (9);object EmitObj = Activator.CreateInstance (MathType,false);object Result = MathType.InvokeMember("Sum",
BindingFlags.InvokeMethod ,null,EmitObj,Parameters);
Console.WriteLine("Sum of {0}+{1} is {2}", Parameters[0],Parameters[1],Result.ToString());
Console.ReadLine();}
}
Reflection
![Page 43: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/43.jpg)
ConfigurablePart
VariablePart
Component Configurator
Factory
Strategy
<<LINKS>>
<<CREATES>>
CommonPart
Log
Security
Transaction
다시 보는 가족 관계
![Page 44: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/44.jpg)
패턴 가족 이야기 2
![Page 45: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/45.jpg)
10/20/2009Devpia A&D EVA 45
Change
1. Observation
2. Notification
Data
Starcraft 때문에생긴 오해!!
스타에서의 Observer
![Page 46: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/46.jpg)
패턴에 있는 Observer는통보 받는 자(Notifieer)이다.
![Page 47: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/47.jpg)
Applicants
Manager
Don’t Call us!!
Hollywood Principle
![Page 48: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/48.jpg)
Applicants
Manager
Don’t Call us!
We Call You!!!
Hollywood Principle
![Page 49: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/49.jpg)
Data
Client (Type1) Client (Type2) Client (Type3)
Manager Client (Source)
1. Change2. Change
3. Notification
Observer is Notifieer
Change
정확한 Observer
![Page 50: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/50.jpg)
Subject
+Attach (Observer o)+Detach (Observer o)+Notify()
ConcreteSubject
Observer
+Update ()
ConcreteObserver
Observer
![Page 51: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/51.jpg)
Configuration FileApp.configWeb.config
Handler
Client A
Client B
Overhead!!
File I/O
Load
Get Info
ChangeConfig File
Notifiy
패턴 가족 이야기 2
![Page 52: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/52.jpg)
Configuration FileApp.configWeb.config
Handler
Client A
Load
Get Info
ChangeConfig File
Notifiy
A Smart Developer
FileSystemWatcher.NotifyFilter
패턴 가족 이야기 2
![Page 53: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/53.jpg)
패턴 가족 이야기 3
![Page 54: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/54.jpg)
무거운 의존관계.
![Page 55: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/55.jpg)
무거운 (Heavy Dependency) 상황
// your API
public class Tracer {
MessageQueue mq = new MessageQueue(…);
public void Trace(string message){
mq.Send(message);
}
}
// your customer’s program that is hard to test
Tracer tracer = new Tracer();
public void ProcessOrder(Order order){
tracer.Trace(order.Id);
…
}
![Page 56: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/56.jpg)
// your better API
public abstract class TraceListener {
public abstract void Trace(string message);
}
public class Tracer {
TraceListener listener;
public Tracer(TraceListener listener){
this.listener = listener;
}
public void Trace(string message){
listener.Trace(message);
}
}
Inversion of Control
Template Method&
Publisher/Subscriber
![Page 57: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/57.jpg)
// your customer’s program that is easier to test
Tracer tracer = new Tracer(new FileListener());
public void ProcessOrder(Order order){
tracer.Trace(order.Id);
…
}
Dependency Injection
![Page 58: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/58.jpg)
// customer’s program that is even easier to test
Tracer tracer = container.Resolve<Tracer>();
public void ProcessOrder(Order order){
tracer.Trace(order.Id);
…
}
Check out DI Containers (a.k.a. IoC Containers): autofac, Castle Windsor, PicoContainer.NET, Spring.NET, StructureMap, Unity, nInject and others.
http://www.nInject.org
http://www.springframework.net/
Dependency Injection Container
![Page 59: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/59.jpg)
많은
가족관계 (Compound Pattern)
사례를 알아야..
실제 설계 시 적용하기 쉽다.
![Page 60: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/60.jpg)
패턴과 SoC
(Separation of Concerns)
![Page 61: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/61.jpg)
SoCis
"focusing one's attention upon some aspect”
![Page 62: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/62.jpg)
결국 패턴은
복잡한 문제를
잘 SoC 하는
경험들을 모아놓은 산물..
![Page 63: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/63.jpg)
JAWS - 웹 서버의복잡한 문제를 잘 SoC한 사례
패턴을 이용한 웹 서버 만들기 (한국어 강좌)
http://www.devpia.com/NET2/EvaCast/Lecture/?cu=view&r=11
![Page 64: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/64.jpg)
하지만 현실에는..유연성에만 초점을맞추어 SoC 할 수 없다.
분산 객체 사례..CORBA, Web Service..
![Page 65: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/65.jpg)
4. 패턴 구성요소 바로 알기
![Page 66: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/66.jpg)
패턴의 구성요소(Components)
Name / Aliases
Context
Forces
Problem
Solution
Consequences
Known Use
Related Pattern
![Page 67: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/67.jpg)
패턴에서 가장 중요시 봐야 할 구성요소는..
![Page 68: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/68.jpg)
어머니의
재미난 조언..
![Page 69: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/69.jpg)
못 올라갈나무는
쳐다 보지말아라
길고
짧은 건
대봐야
안다.
![Page 70: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/70.jpg)
해결책 (조언)은 알았는데..
언제 이 조언을 사용하지?
![Page 71: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/71.jpg)
어머니의 조언에서
빠진 것은?
Context
![Page 72: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/72.jpg)
결과보다
어떤 상황에서
이 패턴을 적용하는지아는 것이 중요.
![Page 73: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/73.jpg)
또 중요한 것 하나!
Context
Resulting
![Page 74: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/74.jpg)
패턴 적용 시, 발생하는
단점과 Side Effect를주의 깊게 살펴보기
![Page 75: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/75.jpg)
문제가 뭐야!!
Problem
![Page 76: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/76.jpg)
현재 내가 처한
문제가 무엇인지..
제대로 알아야
패턴을 써 먹지.
![Page 77: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/77.jpg)
실 사례를 살펴봐라
Known Use.
![Page 78: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/78.jpg)
Known Use를 통해
실패와 성공의 이야기를 들어라
![Page 79: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/79.jpg)
패턴의 확장된 구성요소(Components)
Name / Aliases Context Forces Problem Solution Resulting Context
Side Effect Rationale Known Use Related Pattern Sketch References
![Page 80: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/80.jpg)
구성요소들에 대한재미난 이야기들은..
각각의 구성요소에 대한 자세한 설명 –
확장된 PLoP 패턴 구성 요소들http://arload.wordpress.com/2009/09/03/plop-pattern-template/
추가된 구성 요소의 유래 –
Linda Rising의 패턴 만드는 법http://arload.wordpress.com/2009/10/09/fearless-change-2-strategies-or-pattern/
![Page 81: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/81.jpg)
5. 패턴의
올바른 학습 가이드라인.
![Page 82: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/82.jpg)
10/20/2009Devpia A&D EVA 82
초보를 위한 패턴 빌드오더..
![Page 83: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/83.jpg)
Layer
Pipe & Filter
Broker
Master Slave
Client – Dispatcher
Forwarder-Receiver
Model -View-Controller
Presentation -Abstraction - Control
Reflection
Counted Pointer
Blackboard
POSA 1 (아키텍쳐 패턴)
![Page 84: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/84.jpg)
POSA 2 (분산 객체를 위한 패턴)
![Page 85: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/85.jpg)
Resource Acquisition Lookup
Lazy Acquisition
Eager Acquisition
Partial Acquisition
Resource Lifecycle Caching
Pooling
Coordinator
Resource Lifecycle Manager
Resource Release Leasing
Evictor
10/20/2009Devpia A&D EVA 85
POSA 3 (자원 관리를 위한 패턴)
![Page 86: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/86.jpg)
10/20/2009Devpia A&D EVA 86
그 외 패턴들..
![Page 87: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/87.jpg)
10/20/2009Devpia A&D EVA 87
그 외 패턴들..
![Page 88: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/88.jpg)
10/20/2009Devpia A&D EVA 88
그 외 패턴들..
![Page 89: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/89.jpg)
Frank Buschmann et al, “Pattern-Oriented Software Architecture : A System of Patterns”, Volume 1, Wiley
Douglas Schmidt et al, “Pattern-Oriented Software Architecture”, Volume 2, Wiley
Eric Gamma et al, “Design Patterns : Elements of Reusable Object Oriented Software” , Addison Wesley
Pipe & Filter Pattern, http://www.codeproject.com/cs/design/PipesAndFilters.asp
Reflection Pattern, http://www.codeproject.com/csharp/introreflection.asp
References
![Page 90: miss_pattern_v2](https://reader034.vdocuments.net/reader034/viewer/2022051817/54793322b4af9fef158b4772/html5/thumbnails/90.jpg)
FileSystemWatcher.NotifyFilter
http://msdn2.microsoft.com/en-us/library/system.io.filesystemwatcher.notifyfilter(VS.80).aspx
Pattern Language of Program Design
http://www.hillside.net
그 외의 패턴 이야기 (나의 블로그 ..)
http://www.arload.net or http://arload.wordpress.com
소프트웨어 공학 커뮤니티 80개의 무료 강좌들- EvaCast
http://www.evacast.net
References