私はhttp://www.oodesign.com/flyweight-pattern-wargame-example-java-sourcecode.htmlでFlyweightサンプルコードを調べて、静的インスタンス(上記のサイトのようにSOLDIER
)を非静的な兵士に割り当てたときの実際の動作を疑問視していましたインスタンスSoldierClient
の場合、それぞれSoldierClient
は、SoldierClient
オブジェクトにSOLDIER
インスタンスのコピーを何らかの形で保持するため、実際にオブジェクトサイズを小さくしますか?Flyweightパターンで静的インスタンスを静的インスタンスに割り当てる
EDIT:メソッドで
moveSoldier()
それは
を言う//前の場所から兵士表現を削除
//その後、どのように来る新しい場所に
を兵士表現をレンダリングこれはクラス内で作成されたすべてのオブジェクトには影響しませんWarGame
package flyweight;
public class SoldierImp implements Soldier {
/**
* Intrinsic State maintained by flyweight implementation
* Solider Shape (graphical represetation)
* how to display the soldier is up to the flyweight implementation
*/
private Object soldierGraphicalRepresentation;
/**
* Note that this method accepts soldier location
* Soldier Location is Extrinsic and no reference to previous location
* or new location is maintained inside the flyweight implementation
*/
public void moveSoldier(int previousLocationX, int previousLocationY,
int newLocationX, int newLocationY) {
// delete soldier representation from previous location
// then render soldier representation in new location
}
1を参照してください、私の混乱が、ここで我々は、参照のプロパティを変更した場合、IS、それはまた、静的な対応に反映すべきであるが、この場合にはそうではないのですか? – coder9
@ coder9リンクするコードは決して参照のプロパティを変更しません。実際には参照*にはプロパティがありません。 –
質問は上記のように編集されました。ありがとうございました – coder9