// Snapshot object of the attribute
Class propertymemo
{
Monsterpropertyobject perporty; // associations implemented in combination
}
// Memo Mode Interface
Interface imonsterpropertymemo
{
Propertymemo createmeno ();
Void applymeno (propertymemo memo );
}
// Object Property Layer
Class monsterpropertyobject: imonsterpropertymemo
{
Int monstertype {Get; set ;}
Int HP {Get; set ;}
Int MP {Get; set ;}
Propertymemo createmeno ()
{
Propertymemo memo = new propertymemo ();
Memo. HP = hp;
Memo. MP = mp;
}
Void applymeno (propertymemo memo)
{
HP = memo. HP;
MP = memo. MP;
}
}
// Attribute accesser Layer
Interface imonsterpropertyaccesser
{
Int monstertype {Get; set ;}
Int HP {Get; set ;}
Int MP {Get; set ;}
}
// Object Layer
Class MONSTER: imonsterpropertyaccesser
{
Monsterpropertyobject property; // associations implemented in Combination Mode
}
// Customer Code
Class AA: monobehaviour
{
Start ()
{
Ogre ogre = monstermanager. instance. Create (monstertype. Ogre );
Int HP = ogre. HP;
}
}