标签:24 AD 23 visitor get VIP User SVIP 设计模式
有 这样一种情况 ,看一个视频 用户分 normal, VIP ,SVIP
abstract User {
}
Normal :User
VIP:User
SVIP :User
在子类中override User中的一些方法。
现在要求新的业务, 在VIP 中根据用户年龄段分别推送广告。 我 第一反应是增加 VIP 的子类 VIPAge1 VIPAge2 VIPAge3
然后再 VIPAge1 VIPAge2 VIPAge3 中分别写业务逻辑, VIPAge1 VIPAge2 VIPAge3 的声明上端直接指定,-----------可以实现业务。
现在又有原因,不能在上端 判断 VIPAge1 VIPAge2 VIPAge3 .也就是无法声明,同时要求 normal 和SVIP也要加相应广告推送。且时长不同,内容不同 ,判断不同(来源不同))
按我上面的方法能做新增的子类会无穷尽的,
因此新增一个 ------新增Visitor 用访问者模式,
abstract visitor {
get AD noraml {}
get AD VIP {}
get AD SVIP{}
}
------------------
Age Get AD:visitor
{
override get AD VIP {}
}
Source Get AD:visitor
{
override get AD noraml {}
}
----------------
上端调用 viditor
VIP:User{
实现
public override void GetADVisitor(IVisitor visitor)
{
visitor.GetADVip(this);//this 是当前的实例
}
age Get AD :visitor 中实现真正的业务逻辑
{
get AD VIP( user)
}
相当于把业务逻辑转移, 优点 visitor 可随意扩展,, 但是 normal, VIP ,SVIP 一动的话, 变动会很大
标签:24,AD,23,visitor,get,VIP,User,SVIP,设计模式 来源: https://www.cnblogs.com/soulice/p/16596177.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。