广告投放微服务设计与实现

1、PDM设计数据库
设计思路:
1、广告投放表 ad_lanuch
2、广告投放规则表(废弃不用)ad_lanuch_rule
3、广告投放用户表 ad_lanuch_user
4、广告位配置表 ad_location
5、广告产品表 ad_product
7、广告产品的跳转规则表 ad_product_jump_rule
解释:广告投放规则表废弃不用,把规则以json串的形式存入广告投放表。原因:1、考虑到可扩展性2、前期以交付为主,积累产品经验做相应的改进

2、代码实现
投放需求场景:需要根据不同的渠道和程序位置根据投放规则去投放不同的广告。
思路:
要先生成广告产品然后对广告配置各种规则(装饰),当用户访问到有广告投放的位置时,根据投放规则确定此位置要投放的广告。
实现:取出所有有效的广告产品->经过各种规则的过滤后展示筛选之后的广告

运用装饰着模式,动态的将责任附加在对象上
这样一层套一层的去筛选(装饰)和装饰者模式的使用场景完全吻合(类似给咖啡加各种佐料)。每次结尾调用上级的过滤条件,实现过滤条件的有序性。进而按照过滤范围大小去逆向排序筛选规则。

一、装饰者模式

   装饰者模式又称为包装(Wrapper)模式。 装饰者模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

装饰者模式的结构

通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类的方式并不可取,在面向对象的设计中,我们应该尽量使用组合对象而不是继承对象来扩展和复用功能,装饰器模式就是基于对象组合的方式的。

装饰器模式以对客户端透明的方式动态地给一个对象附加上了更多的责任。换言之,客户端并不会角色对象在装饰前和装饰后有什么不同。装饰器模式可以在不用创建更多子类的情况下,将对象的功能加以扩展。

二、装饰器模式中的角色有:

1、抽象构件角色

给出一个抽象接口,以规范准备接受附加责任的对象

2、具体构件角色

定义一个将要接受附加责任的类

3、装饰角色

持有一个构建对象的实例,并定义一个与抽象构件接口一致的接口(调用上级的过滤条件)

4、具体装饰角色

负责给构建对象贴上附加的责任
	开放-关闭原则:类应该对扩展开放,对修改关闭。
	你需要把注意力集中在设计中最有可能改变的地方,然后应用开放-关闭。

	装饰着模式--动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。

启发:虽然实现结果会相同,但是对它的叫法会影响设计思路。
正确的定义问题比解决问题更重要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值