퇴근5분전


 뭐 볼꺼 있나... 요약하자...


문제 -- 해결책 따로 따로 매칭시켜서 처리 해보자..

어떤 문제들을 해결할수 있는 방법 1,2,3,... N 개가 존재할시 이 해결법들을 하나로 묶어 관리 하며

제시되는 문제들을 받았을때 이 문제를 해결할수 있는놈이 처리하자!! 라는 취지임.

없으면 말고.. 라는? ㅋㅋ

문제1 : 문제,  문제 2 : 문제, 문제3 : 문제, 문제4 : 문제, 문제n : 문제...

해결법1 : 해결 . 해결법2 : 해결 , 해결법3 : 해결 , 해결법4 : 해결 ... 해결법n : 해결 .

해결 { 해결 Next; setNext( 해결 );  풀이( 문제 );  내꺼( 문제 );  }

이렇게 따로 따로 분리하여 각 해결법과 문제를 볼수 있게 된다.

해결법1.setNext(해결법2).setNext( 해결법3 )... <-- 체인 처럼. 각각 연결을 시켜둔다.

해결법1.풀이( 문제1 );  
해결법1.풀이( 문제2 ); ...

풀이 내부에서는 자기가 풀수 있는 문제인지 체크하고 풀거나 또는 다음으로 넘겨준다.

이런 순서라는거쥐... 문제는 이것도 지식이되고 만다는거...

어따 써머거? 음... 어따 써먹을지 찾아보자. 전에 뭔가 하다가 써먹으려다 실패했었다.


명령 자체를 객체로 만든다 라는 개념인데 잘 보면 어렵진 않고...

다만 이걸 어따 써먹느냐..가 관건인듯 하다.

늘 그렇듯이 쌓아올린 지식은 지혜로 바꾸어내야만 한다. 써먹을수 있는 지식을 많이 가지는 것이 곧 내가 지향하는 목표가 아닌가..

 프로그래밍에 대한 전반적인 지식들은 인터넷, 서적등으로 얼마든지 취할수 있으나 이것을 써먹지 못하면... 알아서 뭐하겠는가? 

  간단히 커맨드패턴을 요약하자면..
 
1. 명령{ 수행() }

2. 수행객체{  수행할일(); }

1 + 2 . 명령처리객체 : 명령
{
    수행객체 ;
   
    수행() { 수행객체.수행()}
}

3. 요청처리객체
{
   명령;
   수행(){  명령.수행() }
}
 
보통의 객체와 객체사이의 메세지 전달구조에서는 객체와 객체간에 메세지를 공통으로 사용하기 위해서 Interface를 사용하는데 단일 메서드 일때는 그냥 호출해도 되지만  한번에 호출될 메세지가 많을때 이를 캡슐화 할때 이용할수 있다.

 예제로 본 문서에는 전사, 법사, 힐러 같은경우를 예로 들고 있다
Attack() 공격시  전사가 취하는 행동, 법사가 취하는 행동, 힐러가 취하는 행동이 각각 다르지만. Attack()이란 명령으로 통합관리 할수 있고 이를 커맨드패턴을 이용하는 기법에 대해 설명하고 있다.

1.
명령 { Attack() }

2.
전사{ 준비자세(); 칼을 든다(); 후려친다(); 준비자세(); }
법사{ 준비자세(); 책을 편다(); 스킬시전한다(); 준비자세();}
...

1 + 2.
 전사명령처리 : 명령 { 
  전사;
  Attack()
{
전사.준비자세(); 
전사.칼을든다();
전사.후려친다();
전사.준비자세();
}
}

3. 캐릭터명령
{
     명령 : 
     SetCmd( 명령 );
     Attack(){ 명령.Attack();  }
}

전사 워리어 = new 전사();
명령 cmd = new 전사명령처리( 워리어 );
캐릭터명령  cCmd = new 캐릭터명령( );
cCmd.SetCmd( cmd );
cCmd.Attack();  


뭐 이런식이라는데... 

명령을 객체화 하여 실제행동에 사용되는 객체와  명령을 요청한 객체간 관계를 느슨하게 만들어주는... 역할을 한다.

느슨하게!! 라는것에 대한 생각을 해볼필요가 있어보인다.


 자가용을 몰다가 한순간 아찔했던 순간이 토요일은 두번이나 겪었다. 

 이천에 도착해서 고속도로를 빠져나오자 마자. 2차선에서 직진중인데 뜬금없이 1톤 포토가 들어오면서 깜빡이.. 썅...
내차를 못본건가?? 차가 길을 잘못들어서서 3차선에서 1차선으로 좌회전하기위해 급하게 끼어들어왔나분데... 쫌만 브레이크 늦게 밟았음 들이 받을뻔했었다...

 또한번은 어머니 모시고 올라와서 이모가 일하시는 가게로 가던중... 가끔 다니던 길이지만 다니던 학교앞이라
U턴을 하기위해 차선을 타고 가는데... 순간 U턴차선이 사라졌음을 보고.. 어랏.. 하는사이에 앞 신호도 바뀌고 나는
멍하니 교차로 안으로 진입해버린것... 혼자 벙쪄서... 정말 순간 아무 생각도 안나던 상황...
 다행히 사고없이 교차로를 통과 하였다. 정말 한순간 머리속이 하얗게 바뀌었다..

 난 정말 차 운전을 하면 안되는 그런 류의 사람인지도 모른다.  머리속에 생각이 너무 많아서 가끔.. 혼란스러울때가 있는데...   그럴때면 멍해진다. 운전하기 정말 싫다.

내가 운전하는 것에 대한 거부를 표시해도 가족들은 그저 무시한다. 어쩔수 없이 짊어질수밖에... 

 신호위반으로 찍혀서 날아와도... 뭐 그닥... 아깝지 않다. 다행히 천만 .. 다행히.. 살아 왔기 때문에... 그깟 벌금... 내주마!