이의 게임 군인이라는 객체가 있다고 가정하자 (플라이급을 읽는 동안 나는이 예제를 발견)하고 위치입니다하여이 개체가 다른 경우에만
전에서 플라이급 패턴을 사용 해요 경우 지금은 내 질문에
입니다 이 객체는 게임 중에 병사를 여러 번 구해달라고 요청할 수 있습니다. 각 병사가 자신의 위치를 갖기를 바랍니다.
어떻게 처리 할 수 있습니까?플라이 웨이트 디자인 패턴이 다른 오브젝트를 유지하는 방법은 무엇입니까?
0
A
답변
1
플라이급 디자인 패턴은 모든 병사가 공유 데이터를 많이 포함하는 경우 유용합니다. 예를 들어 군인과 민간인이 있다고 가정 해 보겠습니다. 각각에는 다른 maxHP, attackSpeed 및 damage가 있지만 모든 병사는 이러한 특성을 공유합니다. 이 경우 당신은 할 수 있습니다
이class UnitTemplate {
String name;
int maxHP;
int attackSpeed;
int damage;
}
class Unit{
UnitTemplate template;
int x;
int y;
}
단위의 민간 유형의 군인 장치의 유형과 하나 UnitTemplate 하나의 2 개 인스턴스가있을 것입니다. 유닛 인스턴스는 여러 개일 수 있으며, 유닛 인스턴스는 군인 UnitTemplate 또는 민간 UnitTemplate을 가리킬 수 있습니다.
3
그래, 나는 patheros에 동의한다. 그러나 Flyweight pattern을 사용하려는 인센티브가 인센티브로 몇 가지 추가 클래스 구조를 필요로하지 않는다는 것을 지적하고 싶다. 인센티브는 플라이급 패턴을 사용하면 일반/무거운 리소스의 사용을 최소화한다는 것입니다.
모든 병사가 동일한 그래픽 표현을 사용한다고 가정합니다. 그래픽 데이터를 인스턴스화하는 각 병사 (구현의 일반적인 '무거운'측면)보다는 모든 병사가 공유하는 하나의 '템플릿'객체를 만듭니다.
class SharedSoldierData {
/** UI representation, big, and common to all. */
byte[] bitmap;
}
class Soldier {
int x,y;
void doMovement(SharedSoldierData extraData) {
// In order to move, I need the 'UI' information (a bitmap), which must be provided to me.
}
}
// example usage:
SharedSoldierData soldierType = new SharedSoldierData(...); // setup with the soldiers bitmap
Soldier soldier1 = new Soldier();
Soldier soldier2 = new Soldier();
// modify the solider x/y locations as the game progresses...
soldier1.doMovement(soldierType); // move soldier 1
soldier2.doMovement(soldierType); // ditto for soldier 2.
에서만 SharedSoldierData 클래스 (이 경우 무거운 리소스 비트 맵의 인스턴스)의 한 인스턴스있을 것입니다,하지만 당신은 군인 클래스의 잠재적으로 여러 인스턴스를 가질 것입니다. 군인은 무거운 자원 데이터에 대한 액세스를 제공하지 않으면 아무것도 할 수 없습니다 ...
관련 문제
- 1. 부스트 플라이 웨이트 패닉
- 2. 계층 구조/플라이 웨이트/파이썬 인스턴스 문제
- 3. 정적 인스턴스를 플라이 웨이트 패턴에 정적으로 할당하기
- 4. 오브젝트를 연결하기위한 디자인 패턴
- 5. 데이터베이스 기반 응용 프로그램에서 플라이 웨이트 패턴 사용
- 6. 마법사를 만들기위한 디자인 패턴이 있습니까?
- 7. 잘못된 디자인 패턴이 있습니까?
- 8. 어떤 디자인 패턴이 유용합니까?
- 9. 디자인 패턴이 필요한 이유
- 10. MVC 패턴이 DAL/BLL 디자인 패턴과 다른 점은 무엇입니까?
- 11. 서로 다른 레이아웃 오브젝트를 스택하는 방법은 무엇입니까?
- 12. 더 복잡한 오브젝트에서 오브젝트를 빌드하기위한 디자인 패턴
- 13. 'Crystal Ball'OOP 디자인 패턴이 있습니까?
- 14. 재고 관리 디자인 패턴이 있습니까?
- 15. Cocos2d :이 디자인 패턴이 유효합니까?
- 16. 디자인 패턴이 풍부한 코드 기반?
- 17. 절차 언어에 디자인 패턴이 있습니까?
- 18. 외관 디자인 패턴이 MVC와 비슷합니까?
- 19. GTK 네트워킹 앱 : 디자인 패턴이 필요합니다.
- 20. 대부분의 애플리케이션 MVC 디자인 패턴이 다른 디자인 패턴과 비교되는 이유는 무엇입니까?
- 21. 오브젝트를 추상화하는 우아한 방법은 무엇입니까?
- 22. PHP에서 오브젝트를 병합하는 방법은 무엇입니까?
- 23. 파이썬 모듈의 다른 버전을 유지하는 방법은 무엇입니까?
- 24. 어떤 디자인 패턴이 제대로 활용되지 않습니까?
- 25. 레코드에있는 오브젝트를 해제하는 방법은 무엇입니까?
- 26. 작업 준비를 실행과 분리하기위한 디자인 패턴이 있습니까?
- 27. 디자인 타임에 TreeNode의 TreeNodeCollection을 코드에 유지하는 방법은 무엇입니까?
- 28. 플라이 웨이에서 마이그레이션을 다시 실행하는 방법은 무엇입니까?
- 29. 게임 개발에 특히 유용한 디자인 패턴이 있습니까?
- 30. 번역 오브젝트를 전달하기위한 디자인 패턴? PHP
이것은 귀하의 링크이거나 도움이 될 수 있습니다 : http://www.oodesign.com/flyweight-pattern-wargame- example-java-sourcecode.html –