其他分享
首页 > 其他分享> > 23设计模式 24 visitor 访问者模式

23设计模式 24 visitor 访问者模式

作者:互联网

   有 这样一种情况 ,看一个视频    用户分     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