策略者模式:
一句话特点:根据不同的输入得到不同的结果
举个栗子:
需求:
在公司,每个人和公司都需要通过会计交税,但个人与公司交的税又是不同的输入,用代码实现下图
实现:
//交税基类
public class AbsBase
{
public flaot payMoney;
public virtual void CaculateTax()
{
}
}
//个人类
public class AbsPerson:AbsBase
{
public override void CaculateTax()
{
payMoney *= 0.08f;//计算税率
}
}
//公司类
public class AbsCompany:AbsBase
{
public override void CaculateTax()
{
payMoney *= 0.12f;
}
}
public class TestAbstrator:MonoBehaviour
{
public void CaculateTax(AbsBase tempBase)
{
tempBase.CaculateTax();
}
void Start()
{
AbsPerson tempPerson = new AbsPerson();
CaculateTax(tempPerson);
AbsCompany tempConpaney = new AbsCompaney();
CaculateTax(tempConpaney);
}
}