网站有了备案号之后能做什么,html网页制作基础知识,designer怎么做网站,企业专业网站建设目录
概念
需求
贫血模型
充血模型
总结 概念
贫血模型#xff1a;一个类中只有属性或者成员变量#xff0c;没有方法。充血模型#xff1a;一个类中既有属性、成员变量#xff0c;也有方法。
需求
定义一个类保存用户的用户名、密码、积分#xff1b;用户必须具有…目录
概念
需求
贫血模型
充血模型
总结 概念
贫血模型一个类中只有属性或者成员变量没有方法。充血模型一个类中既有属性、成员变量也有方法。
需求
定义一个类保存用户的用户名、密码、积分用户必须具有用户名为了保证安全密码采用密码的散列值保存用户的初始积分为10分每次登录成功奖励5个积分每次登录失败扣3个积分。
贫血模型
优点简单清晰适合小型项目或简单业务逻辑。
缺点业务逻辑分散不利于复杂业务场景的维护。
class User
{public string UserName { get; set; }//用户名public string PasswordHash { get; set; }//密码的散列值public int Credit { get; set; }//积分
}User u1 new User(); u1.UserName ljy; u1.Credit 10;
u1.PasswordHash HashHelper.Hash(123456);//计算密码的散列值
string pwd Console.ReadLine();
if(HashHelper.Hash(pwd)u1.PasswordHash)
{u1.Credit 5;//登录增加5个积分Console.WriteLine(登录成功);
}
Else
{if (u1.Credit 3)Console.WriteLine(积分不足无法扣减);else{u1.Credit - 3;//登录失败则扣3个积分}Console.WriteLine(登录失败);
}
充血模型
符合“单一职责原则”
class User
{public string UserName { get; init; } public int Credit { get; private set; }private string? passwordHash;public User(string userName){this.UserName userName;this.Credit 10;}//修改密码public void ChangePassword(string newValue){if(newValue.Length6){throw new Exception(密码太短);}this.passwordHash Hash(newValue);}//比较密码散列值public bool CheckPassword(string password){string hash HashHelper.Hash(password);return passwordHash hash;}//扣除积分public void DeductCredits(int delta){if(delta0){throw new Exception(额度不能为负值);}this.Credit - delta;}//增加积分public void AddCredits(int delta){this.Credit delta;}
}
User u1 new User(ljy);
u1.ChangePassword(123456);
string pwd Console.ReadLine();
if (u1.CheckPassword(pwd))
{u1.AddCredits(5);Console.WriteLine(登录成功);
}
else
{u1.DeductCredits(5);Console.WriteLine(登录失败);
}总结
贫血模型是站在开发人员的角度思考问题充血模型是站在业务的角度思考问题。