2015년 4월 17일 금요일

2.옵저버 패턴 (Observer Pattern)

하나의 객체가 변경사항이 생기면 다른객체에 전달하여 적절한 액션을 취할수 있도록 하는 패턴이다.

주로 발행한다. 는 의미가 강함

http://warmz.tistory.com/751 , http://wiki.gurubee.net/pages/viewpage.action?pageId=1507370 의 알람옵저버패턴을 보면이해가 될것이다.

http://hyeonstorage.tistory.com/165

http://tiboy.tistory.com/entry/Observer-Pattern

자바스트립트 옵저버 패턴? http://jsfiddle.net/vasco989k/HPsFp/

http://www.javajigi.net/display/SWD/ch02_observerpattern

object-c 옵저버패턴 http://kyejusung.com/2015/09/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-2-observer-pattern/

1.디자인패턴-strategy pattern( 전략,전술 패턴)

Stat 패턴과 차이점이 잇는데 , 패턴내부에서 스스로 객체로 변경하는 것은 state 패턴이고

외부에서 객체를 지정해줘야 상태변경이 가능한 것이 strategy 이다

-------------------------------

Strategy 패턴은 주요객체는 공통된 기능(메쏘드)을 상속공유한다는 전제로서, 각 객체의 행동이 독립적인 속성을 가지고자 할때 유용한 패턴이다.

또한 abstract  로 선언된 공통된 기능을 포함한 추상클래스에
고정적으로 선언된 독립된 인터페이스(또는 레퍼런스)를  통해 하위 속성을
지정하는 것만으로도 객체의 특징속성(차는 원래 굴러다니지만, 날개를 붙이면 날라다닐수도 있다)을
변경가능한것이 용이하다는 장점이 있다.

이를 통해 객체의 속성을 실시간으로 변경할수도 있다.

다만 최상위 클래스에서 미리 행동양식들을 계산하고 정의해야 되기때문에,
최상위 클래스를 어떻게 설계하고, 바뀔수 있는 각각의 독립적인 행동양식들을 구분해 내느냐가 관건이다.

게임을 만든다고 치자.

주인공은 처음에는 걷는것만 할수있지만, 점점 아이템을 장착함에 따라 빨리 뛰고,날수 있게된다.
따라서  NPC 에서 MOVE 액션에 걷기를 빨리뛰기로, 또 날개가 장착되었을때는 날라가기로 바꾸기만 하면 해당액션을 할수있다.

물론 상속으로도 해결되지만, 재상속에 의한 스트레스를 줄이기 위해선 그냥 전략패턴을 쓰는게 좋다.

-------------------------------

 

 

http://hyeonstorage.tistory.com/146

굳이 전략 이라는 단어에 끼워 맞춘다면 이렇다.

일단 공격일자는 정해져 있다.
다만 공격 아이템들은 보병,스나이퍼, 자동차, 탱크,오토바이, 비행기, 배 등 다양한다.
보통은 자동차 클래스 따로, 탱크 클래스 따로 따로 만들어서 제어하는게 맞다.

하지만 이렇게 하면 공격아이템들이 늘어날때마다(수륙양용 호버크래프트,드론등..)
같은 행동을 하는 클랙스를 생성해야 한다면 매우 귀찮을 것이다.

따라서 전략 패턴을 적용해서.!!!

일단 병기 라는 추상 클랙스를 만들자.
그리고 나서 병기가 가져야할 공통 부분을 뽑아내 보자. 단 뽑아낸 공통 부분이 각 병기에 따라서 다른 값과 행동으로 구분된다면 이를 별도의 클래스 로 구분할 생각을 하자.
그럼 공통된 부분은
이동
전투
휴식
자멸
등이 있겠다.
이중 이동,전투 는 동일하다. 다른 행동을 취하는 것은 휴식,자멸이다. 비행기나 배 등은 휴식이 없으니까..
따라서 휴식,자멸은 별도의 행동패턴이라고 치부하고, 별도의 클래스로 만들어서 해당되는 병기들에게만 적용한다.

결국 보병,자동차,오토바이 들은 병기 추상클래스의 휴식 인터페이스를 지정하여 주면된다. 인터페이스로 지정해 주었으므로 각 병기에 맞게 쉬는 형태를 설정하면된다.

쉰다 인터페이스

-> 보병:앉아서 메쏘드 ,
-> 자동차,오토바이:시동을 끈다

따른 애들은 지정 안하면 된다.

 

http://jongyoungcha.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-state-%ED%8C%A8%ED%84%B4%EA%B3%BC-strategy-%ED%8C%A8%ED%84%B4%EC%97%90-%EB%8C%80%ED%95%B4

2015년 4월 7일 화요일

유니티 최적화팁

http://www.slideshare.net/agebreak/141206-42456391

2015년 4월 5일 일요일

https://github.com/wasabeef/awesome-android-ui

https://github.com/wasabeef/awesome-android-ui