// 属性的快照对象
class PropertyMemo
{
MonsterPropertyObject perporty; // 组合方式实现的关联
}
// Memo模式接口
interface IMonsterPropertyMemo
{
PropertyMemo createMeno();
void ApplyMeno(PropertyMemo memo);
}
// 对象属性层
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;
}
}
// 属性访问器层
interface IMonsterPropertyAccesser
{
int MonsterType{get;set;}
int HP{get;set;}
int MP{get;set;}
}
// 对象层
class Monster : IMonsterPropertyAccesser
{
MonsterPropertyObject property; // 组合模式实现的关联
}
// 客户代码
class AA : MonoBehaviour
{
Start()
{
Ogre ogre = MonsterManager.Instance.Create(MonsterType.Ogre);
int hp = ogre.HP;
}
}