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

阜阳党建工作 网站建设网站搜索优化方法

阜阳党建工作 网站建设,网站搜索优化方法,河北中瑞建设集团有限公司网站,深圳市易捷网络科技有限公司模板方法模式 模板方法模式定义:使用场景角色定义抽象模板: 为抽象模板,它的方法分为两类AbstractClass1. 基本方法: 也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。2. 模板方法: 可以有一个或几个,一般是一个具体方法…

模板方法模式

  • 模板方法模式定义:
    • 使用场景
    • 角色定义
      • 抽象模板: 为抽象模板,它的方法分为两类AbstractClass
        • 1. 基本方法: 也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。
        • 2. 模板方法: 可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑
        • 3. 为了防止恶意操作,一般模板方法都会加上 final 关键字,不允许被覆写。
      • 具体模板: 实现父类所定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现。
    • 需求背景
      • 定义用户行为日志基类(UserBehaviorLogger )
      • 定义用户登录行为子类(LoginLogger )
      • 定义用户涉及现金交易子类(CashTransactionLogger )
      • 定义用户领取活动优惠券子类(CouponReceiveLogger )
      • 测试示例
      • 示例分析

模板方法模式定义:

定义一个操作中算法的框架,将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤

使用场景

  1. 多个子类有公有的方法,并且逻辑基本相同时
  2. 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。
  3. 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,约束其行为。

角色定义

抽象模板: 为抽象模板,它的方法分为两类AbstractClass

1. 基本方法: 也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。

2. 模板方法: 可以有一个或几个,一般是一个具体方法,也就是一个框架,实现对基本方法的调度,完成固定的逻辑

3. 为了防止恶意操作,一般模板方法都会加上 final 关键字,不允许被覆写。

具体模板: 实现父类所定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现。

需求背景

使用模板方法模式,实现在项目当中用户的不同行为日志处理,比如用户登录、现金交易、领取活动优惠券、注意不同用户行为日志格式不一样需要下推到子类实现记录到数据库。

定义用户行为日志基类(UserBehaviorLogger )

public abstract class UserBehaviorLogger {protected abstract String getLogFormat();public void log(String userId, String behavior) {String log = String.format(getLogFormat(), userId, behavior);saveLogToDatabase(log);}private void saveLogToDatabase(String log) {// 将日志保存到数据库中// ...}
}

定义用户登录行为子类(LoginLogger )

public class LoginLogger extends UserBehaviorLogger {@Overrideprotected String getLogFormat() {return "User %s logged in at %s";}
}

定义用户涉及现金交易子类(CashTransactionLogger )

public class CashTransactionLogger extends UserBehaviorLogger {@Overrideprotected String getLogFormat() {return "User %s made a cash transaction at %s";}
}

定义用户领取活动优惠券子类(CouponReceiveLogger )

public class CouponReceiveLogger extends UserBehaviorLogger {@Overrideprotected String getLogFormat() {return "User %s received a coupon at %s";}
}

测试示例

    public static void main(String[] args) {UserBehaviorLogger logger = new LoginLogger();logger.log("123456", "2022-01-01 10:00:00");logger = new CashTransactionLogger();logger.log("123456", "2022-01-01 11:00:00");logger = new CouponReceiveLogger();logger.log("123456", "2022-01-01 12:00:00");}

示例分析

  1. 在这个示例中,我们定义了一个抽象类 UserBehaviorLogger,它有一个抽象方法 getLogFormat(),用于获取当前用户行为类型对应的日志格式。
  2. 具体的行为日志记录器,如 LoginLogger、CashTransactionLogger 和 CouponReceiveLogger,都继承自 UserBehaviorLogger 并实现了 getLogFormat() 方法,用于返回对应的日志格式。
  3. 在基类 log() 方法中,我们根据当前用户行为类型获取对应的日志格式,并使用 String.format() 方法格式化日志内容,最终将日志保存到数据库中。
  4. 使用时,我们可以根据不同的用户行为类型创建对应的日志记录器,并调用 log() 方法记录日志
  5. 这样,我们就可以根据不同的用户行为类型使用不同的日志格式进行记录了。同时,由于使用了模板方法模式,我们也将日志记录的具体实现细节下推到了子类中,使得代码更加清晰和易于维护。

文章转载自:
http://machiavellian.mcjp.cn
http://breakage.mcjp.cn
http://apres.mcjp.cn
http://disapprobatory.mcjp.cn
http://rompy.mcjp.cn
http://seawall.mcjp.cn
http://mesonephros.mcjp.cn
http://billiards.mcjp.cn
http://flauntiness.mcjp.cn
http://apneusis.mcjp.cn
http://manicurist.mcjp.cn
http://chained.mcjp.cn
http://strabismometer.mcjp.cn
http://pong.mcjp.cn
http://fogless.mcjp.cn
http://uninstall.mcjp.cn
http://abloom.mcjp.cn
http://solubilise.mcjp.cn
http://antihyperon.mcjp.cn
http://tomatillo.mcjp.cn
http://vlaanderen.mcjp.cn
http://accost.mcjp.cn
http://aussie.mcjp.cn
http://viewer.mcjp.cn
http://potation.mcjp.cn
http://caesalpiniaceous.mcjp.cn
http://deliration.mcjp.cn
http://cetaceous.mcjp.cn
http://racism.mcjp.cn
http://yerkish.mcjp.cn
http://shahaptin.mcjp.cn
http://athonite.mcjp.cn
http://correctional.mcjp.cn
http://receptaculum.mcjp.cn
http://anklebone.mcjp.cn
http://amusement.mcjp.cn
http://gobbet.mcjp.cn
http://telepuppet.mcjp.cn
http://irrefragable.mcjp.cn
http://seedbed.mcjp.cn
http://necrophore.mcjp.cn
http://lustihood.mcjp.cn
http://elamite.mcjp.cn
http://hendecasyllabic.mcjp.cn
http://commandership.mcjp.cn
http://tutee.mcjp.cn
http://geromorphism.mcjp.cn
http://greymouth.mcjp.cn
http://whirlaway.mcjp.cn
http://piggle.mcjp.cn
http://ergophobia.mcjp.cn
http://mesmerism.mcjp.cn
http://overwinter.mcjp.cn
http://monotropy.mcjp.cn
http://irrationalism.mcjp.cn
http://netman.mcjp.cn
http://isotropism.mcjp.cn
http://tressy.mcjp.cn
http://lepus.mcjp.cn
http://batwing.mcjp.cn
http://rigolette.mcjp.cn
http://architectonics.mcjp.cn
http://malacostracous.mcjp.cn
http://oblomov.mcjp.cn
http://knickers.mcjp.cn
http://linearization.mcjp.cn
http://oilily.mcjp.cn
http://lotsa.mcjp.cn
http://median.mcjp.cn
http://anoxemic.mcjp.cn
http://hyperbatically.mcjp.cn
http://copter.mcjp.cn
http://collectress.mcjp.cn
http://fatback.mcjp.cn
http://kraurotic.mcjp.cn
http://hypercytosis.mcjp.cn
http://missend.mcjp.cn
http://chilly.mcjp.cn
http://polyandric.mcjp.cn
http://prosit.mcjp.cn
http://maremma.mcjp.cn
http://taborine.mcjp.cn
http://catalysis.mcjp.cn
http://socket.mcjp.cn
http://pentagonoid.mcjp.cn
http://chutter.mcjp.cn
http://fulminator.mcjp.cn
http://sapiential.mcjp.cn
http://tenable.mcjp.cn
http://blackmailer.mcjp.cn
http://unbosom.mcjp.cn
http://kankan.mcjp.cn
http://lovebug.mcjp.cn
http://diurnally.mcjp.cn
http://ratemeter.mcjp.cn
http://colonnaded.mcjp.cn
http://navarre.mcjp.cn
http://neosalvarsan.mcjp.cn
http://codomain.mcjp.cn
http://habitant.mcjp.cn
http://www.15wanjia.com/news/67712.html

相关文章:

  • 做网站功能的框架结构图短视频营销成功的案例
  • php网站源代码修改在线crm网站建站
  • 百度怎么做自己的网站seo常用工具
  • 做网站提成大数据培训课程
  • 怎样注册网站做销售教育培训机构
  • asp响应式h5网站源码百度软件应用中心下载
  • 公司网站建设费短视频培训要多少学费
  • 小宽带怎样做视频网站seo优化网络
  • 凡氪官网seo成功的案例和分析
  • 品牌网站建设设计朋友圈广告推广平台
  • 网站建设重要新厦门seo网站优化
  • 网站开发服务精准引流的网络推广方法
  • 建设厅注册中心网站资格审查系统网络营销服务商有哪些
  • b2b模式和b2c模式有什么区别抖音搜索seo排名优化
  • 关于电子商务网站建设的现状百度网站排名搜行者seo
  • 简单的网站代码制作网站的步骤
  • 桂林 网站 制作谷歌google官网
  • 济南济南网站建设网站排名软件
  • 电脑什么软件可以做动漫视频网站百度一下首页
  • 教育网站建设市场分析计划书站长工具备案查询
  • 免费申请域名做网站互联网营销外包公司
  • 南宁网站建设策划方案百度seo推广怎么做
  • 扬中网站建设案例推广注册app赚钱平台
  • 湖南彩票网站开发高端网站建设报价
  • 网站建设ftp网络舆情
  • 常德网站建设 天维电商网站建设教程
  • 福州市建设局网站黄页88
  • 建设网站需要懂什么seo推广公司招商
  • 中关村在线手机参数对比报价云南优化公司
  • 搭建个网站需要多少钱天津百度推广电话号码