//基础玩家类
public interface BasePlayer {
int GetHp();
}//基础装饰类,同样是继承基础玩家类
public class BaseDecorator : BasePlayer
{
private BasePlayer player;
public BaseDecorator(BasePlayer b)
{
player = b;
}
public virtual int GetHp()
{
return player.GetHp();
}
}public class APlayer : BasePlayer
{
public int GetHp()
{
return 200;
}
}public class KuziDress:BaseDecorator {
public KuziDress(BasePlayer b) : base(b) { }
public override int GetHp()
{
//穿上裤子装备后的血量
return base.GetHp() + 100;
}
}public class YiFuDress : BaseDecorator {
public YiFuDress(BasePlayer b) : base(b) { }
public override int GetHp()
{
return base.GetHp() + 50;
}
}using UnityEngine;
public class testDress : MonoBehaviour {
void Start () {
BasePlayer player = new APlayer();
player = new KuziDress(player);
player = new YiFuDress(player);
Debug.Log(player.GetHp());
}
}如果装饰很多就需要创建很多很多的装饰类,而且,玩家Player他自己都不知道自己穿了多少个装饰。