装饰模式实例
//基础玩家类
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他自己都不知道自己穿了多少个装饰。


首页 我的博客
粤ICP备17103704号