当前位置: 首页 > news >正文

玉林住房和城乡建设局网站官网seo是什么意思中文

玉林住房和城乡建设局网站官网,seo是什么意思中文,关于网站建设毕业论文,网站建设广告模板方法模式(行为模式) 1. 模板方法模式介绍 父类定义算法骨架,细节的具体实现延迟到子类子类只是定义某些自己的个性化处理,但不改变执行顺序 2. 好处 减少代码冗余,共性抽取后算法流程更加清晰与规范降低流程性…

模板方法模式(行为模式)

1. 模板方法模式介绍

  • 父类定义算法骨架,细节的具体实现延迟到子类
  • 子类只是定义某些自己的个性化处理,但不改变执行顺序

2. 好处

  • 减少代码冗余,共性抽取后算法流程更加清晰与规范
  • 降低流程性错误的可能,开发类似的新需求,能通过父类算法骨架清晰理出流程
  • 定义了统一执行标准,便于管理与控制流程
  • 子类仅需要实现自己的个性化业务,修改自己的业务不会影响其他业务,符合单一职责原则

3. 场景案例

  • 项目中会开发大量实时变化的榜单,榜单的更新与查询流程基本都相同,如:公共校验、个性化校验、榜单排名获取、符合规则上榜、不符合规则下榜,但不同榜单校验方式与获取渠道不同
    • 使用模板方法模式
    • 接口添加为需要的抽象方法
    • 抽象类实现接口添加算法骨架与实现统一的抽象方法,同时使用接口的抽象方法
    • 具体的榜单需要继承抽象父类,实现抽象方法,然后调用算法骨架方法即可
  • 一对一视频聊有三中场景,执行流程均相同,但是计费规则等业务不同
    • 抽象父类定义执行顺序
    • 三种场景:一对一、直播转向、速配,直接继承父类处理规则,然后实现自己具体的计费规则

4. 案例源码

  • 代码结构
├── IRank.java
├── base
│   └── AbstractBaseRank.java
├── bean
│   ├── RankDelReq.java
│   └── RankMessageReq.java
├── ext
│   └── ExtServiceImpl.java
└── impl└── RankServiceImpl.java
  • 公共榜单接口
public interface IRank {/*** 公用判断,是否被审核处罚等处理,返回判断结果* @return {@code 0} 正常、不用下榜(也可使用 Enum 枚举)*/int getCommLimit(long userId);/*** 个性化判断,返回判断结果* @return {@code 0} 正常、不用下榜(也可使用 Enum 枚举)*/int getRankUp(long userId);/*** 查询用户在榜单的分数* @return 返回分数 Redis 中 zset 数据结构的 score*          {@code null} 分数为 null 需要下榜单,*/Double getScore(long userId);/*** 用户上榜* @return {@code true} 用户上榜成功*/boolean doRankUp(RankDelReq rankDelReq);/*** 用户下榜* @return {@code true} 用户下榜成功*/boolean doRankDown(RankDelReq rankDelReq);
}
  • 公共榜单抽象父类
    • 定义算法骨架,实现公共的方法
public abstract class AbstractBaseRank implements IRank {/*** 榜单处理流程*/public void dealRank(RankMessageReq rankMessage) {// 判空if (rankMessage == null || rankMessage.getUserId() == null) {System.out.println(String.format("传入信息异常:%s", rankMessage));return;}long userId = rankMessage.getUserId();// 公共判断int commLimit = getCommLimit(userId);// 不符合则下榜if (commLimit != 0) {boolean rankDownFlag = doRankDown(new RankDelReq(userId, null, commLimit));System.out.println(String.format("用户:%s 不符合公共判断下榜单:%s 下榜结果:%s", userId, commLimit, rankDownFlag));return;}// 个性化判断int rankUpLimit = getRankUp(userId);// 不符合则下榜if (rankUpLimit != 0) {boolean rankDownFlag = doRankDown(new RankDelReq(userId, null, rankUpLimit));System.out.println(String.format("用户:%s 不符合个性化判断下榜单:%s 下榜结果:%s", userId, rankUpLimit, rankDownFlag));return;}// 返回分数Double score = getScore(userId);// 分数为 null 则下榜if (score == null) {boolean rankDownFlag = doRankDown(new RankDelReq(userId, score, null));System.out.println(String.format("用户:%s 没有分数判断下榜单 下榜结果:%s", userId, rankDownFlag));return;}boolean rankUpFlag = doRankUp(new RankDelReq(userId, score, null));System.out.println(String.format("用户:%s 上榜结果:%s", userId, rankUpFlag));}/*** 公用判断,是否被审核处罚等处理,返回判断结果* @return {@code 0} 正常、不用下榜(也可使用 Enum 枚举)*/@Overridepublic int getCommLimit(long userId) {// 被冻结if (ExtServiceImpl.isFreeze(userId)) {System.out.println(String.format("用户:%s 被冻结:%s", userId));return 1;}// 被禁玩if (ExtServiceImpl.isBan(userId)) {System.out.println(String.format("被禁玩:%s", userId));return 2;}// 榜单审核中if (ExtServiceImpl.isRankAudit(userId)) {System.out.println(String.format("榜单审核中:%s", userId));return 3;}return 0;}
}
  • 具体某个榜单实现类
public class RankServiceImpl extends AbstractBaseRank {/*** 个性化判断,返回判断结果* @return {@code 0} 正常、不用下榜(也可使用 Enum 枚举)*/@Overridepublic int getRankUp(long userId) {System.out.println("个性化判断");return 0;}/*** 查询用户在榜单的分数* @return 返回分数 Redis 中 zset 数据结构的 score*          {@code null} 分数为 null 需要下榜单,*/@Overridepublic Double getScore(long userId) {System.out.println("查询用户在榜单的分数");return 0D;}/*** 用户上榜* @return {@code true} 用户上榜成功*/@Overridepublic boolean doRankUp(RankDelReq rankDelReq) {System.out.println("用户上榜");return true;}/*** 用户下榜* @return {@code true} 用户下榜成功*/@Overridepublic boolean doRankDown(RankDelReq rankDelReq) {System.out.println("用户下榜");return true;}
}
  • 单元测试代码
public class RankServiceImplTest {@Testpublic void test() {RankServiceImpl rankServiceImpl = new RankServiceImpl();System.out.println(String.format("用户:%s 榜单处理", 2808253L));rankServiceImpl.dealRank(new RankMessageReq(2808253L));System.out.println();System.out.println(String.format("用户:%s 榜单处理", null));rankServiceImpl.dealRank(new RankMessageReq(null));}
}
http://www.mmbaike.com/news/33330.html

相关文章:

  • 个人网站建设小江线上商城的推广方案
  • 金耀网站建设小吃培训去哪里学最好
  • 用ps设计网站做多大的宁波网站推广
  • wap版网站 加app提示互联网推广平台有哪些
  • 湖南网站优化外包费用中国宣布取消新冠免费治疗
  • 静态网站seo怎么做百度网页版登录入口
  • 大型门户网站程序李守洪排名大师怎么样
  • wordpress 找站点保定百度首页优化
  • wordpress 种子插件seo网站优化论文
  • 长沙疾控发布提醒优化网站建设
  • 上海品牌网站建设公司广州线上教学
  • 网站建设步骤电脑百度快照如何优化
  • 遵义祥云平台网站建设软考培训机构排名
  • 做网站开封郑州网络推广哪家口碑好
  • shopnc本地生活o2o网站系统ciliba磁力猫
  • 广州公司做网站线上营销工具
  • 网站设计文献网上做推广怎么收费
  • 做网站工作都包括什么成功营销案例100例
  • 花都网站建设设计网站关键词优化方法
  • 政府机关网站备案教育培训网页设计
  • 现在ui做的比较好的网站网络游戏推广公司
  • 手机网站程序可以用.com作为域名吗百度推广客户端下载网址
  • 网站建设先进工作者网站一键生成
  • 好站站网站建设网络推广方式主要有
  • 网站开发可演示的版本郑州百度推广seo
  • 深圳网站开发专业团队哪个平台可以买卖链接
  • 潮州 网站建设站长之家是什么网站
  • 高州网站建设免费推广网站入口
  • 免费学做淘宝的网站在线网页生成器
  • 大学物流仓储作业代做网站广州网站优化排名系统