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

安全的网站建百度seo推广

安全的网站建,百度seo推广,廊坊做网站的公司,旅游网站建设背景目录 一、背景介绍二、思路&方案三、过程1.策略模式简介2.策略模式的类图3.策略模式代码4.策略模式还可以优化的地方5.策略模式的例子改造(配置文件反射) 四、总结五、升华 一、背景介绍 最近在做产品的过程中,对于主题讨论回复内容,按照追评次数排…

目录

  • 一、背景介绍
  • 二、思路&方案
  • 三、过程
    • 1.策略模式简介
    • 2.策略模式的类图
    • 3.策略模式代码
    • 4.策略模式还可以优化的地方
    • 5.策略模式的例子改造(配置文件+反射)
  • 四、总结
  • 五、升华

一、背景介绍

最近在做产品的过程中,对于主题讨论回复内容,按照追评次数排序、点赞排序、时间排序等内容做了深入研究,通过策略模式可以很好的进行优化。

二、思路&方案

  • 1.策略模式简介
  • 2.策略模式的类图
  • 3.策略模式代码
  • 4.策略模式还可以优化的地方
  • 5.策略模式的例子改造

三、过程

1.策略模式简介

策略模式:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

2.策略模式的类图

在这里插入图片描述

3.策略模式代码

package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:44*/
public abstract class Strategy {public abstract void Algorithmlnterface();
}
package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:46*/
public class ConcreteStrategyA extends Strategy{@Overridepublic void Algorithmlnterface() {System.out.println("算法A的具体实现");}
}
package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:47*/
public class ConcreteStrategyB extends Strategy{@Overridepublic void Algorithmlnterface() {System.out.println("算法B的具体实现");}
}
package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:47*/
public class ConcreteStrategyC extends Strategy{@Overridepublic void Algorithmlnterface() {System.out.println("算法C的具体实现");}
}
package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:45*/
public class Context {private Strategy strategy;Context(Strategy strategy){this.strategy = strategy;}public void ContextInterafce(){strategy.Algorithmlnterface();}
}
package mark.strategy;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:48*/
public class Client {public static void main(String[] args) {Context context;context = new Context(new ConcreteStrategyA());context.ContextInterafce();context = new Context(new ConcreteStrategyB());context.ContextInterafce();context = new Context(new ConcreteStrategyC());context.ContextInterafce();}
}

4.策略模式还可以优化的地方

策略模式后续进行策略的扩充,需要修改客户端代码;对于客户端而言未满足开闭原则。

5.策略模式的例子改造(配置文件+反射)

package mark.strategy.transform;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:44*/
public abstract class Strategy {public abstract void Algorithmlnterface();
}
package mark.strategy.transform;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:46*/
public class ConcreteStrategyA extends Strategy {@Overridepublic void Algorithmlnterface() {System.out.println("算法A的具体实现");}
}
package mark.strategy.transform;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:47*/
public class ConcreteStrategyB extends Strategy {@Overridepublic void Algorithmlnterface() {System.out.println("算法B的具体实现");}
}
package mark.strategy.transform;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:47*/
public class ConcreteStrategyC extends Strategy {@Overridepublic void Algorithmlnterface() {System.out.println("算法C的具体实现");}
}
package mark.strategy.transform;import java.util.HashMap;
import java.util.Map;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:45*/
public class Context {//将这个数据放到配置文件中static Map<String,String> config = new HashMap<>();static Map<String,Strategy> configBean = new HashMap<>();static {config.put("strategyA","mark.strategy.transform.ConcreteStrategyA");config.put("strategyB","mark.strategy.transform.ConcreteStrategyB");config.put("strategyC","mark.strategy.transform.ConcreteStrategyC");//预加载提前做好的策略for (Map.Entry<String,String> entry:config.entrySet()) {Class strategyClass = null;try {strategyClass = Class.forName(entry.getValue());configBean.put(entry.getKey(),(Strategy)strategyClass.newInstance());} catch (Exception e) {throw new RuntimeException(e);}}}private Strategy strategy;Context(String type){try {if(configBean.containsKey(type)){this.strategy = configBean.get(type);}else {Class strategyClass = Class.forName(config.get(type));this.strategy = (Strategy)strategyClass.newInstance();}} catch (Exception e) {throw new RuntimeException(e);}}public void ContextInterafce(){strategy.Algorithmlnterface();}
}
package mark.strategy.transform;/*** 功能描述:** @Author:makang* @Date: 2021/5/29 14:48*/
public class Client {public static void main(String[] args) {Context context;//前端通过下拉框选择不同的类型;下拉框中的值,也是通过配置文件进行读取的context = new Context("strategyA");context.ContextInterafce();context = new Context("strategyB");context.ContextInterafce();context = new Context("strategyC");context.ContextInterafce();}
}

四、总结

1.通过知识的综合运用,使得软件工程落地更加明确
2.何时使用策略:单一入口,单一出口的情况下;内部需要根据不同条件进行不同策略执行的时候使用
3.对策略模式概念的深度理解:算法家族=Strategy父类、分别封装起来=子类、让它们之间可以相互替换,算法的变化=多态、不会影响到使用算法的客户端=客户端满足开闭原则但是不太彻底

五、升华

原则是用来严格遵守的,变是永远不变的。

http://www.tj-hxxt.cn/news/59496.html

相关文章:

  • 如何做单网页网站微信管理工具
  • 信阳建设企业网站公司网站 seo
  • 怎么给网站做跳转seo属于什么
  • 做律师事务所网站seo诊断工具
  • 做网站效果图自动seo优化
  • 网站做子域名百度推广入口登录
  • 可以做围棋题的网站网站推广步骤
  • 国外网站关键词北京建站
  • 手机产品展示网站模板青岛招聘seo
  • 做网站不实名认证可以吗成品网站seo
  • 农家乐网站设计游戏代理推广渠道
  • 线上课程如何推广seo整站优化解决方案
  • 网站建设怎么谈爱站网seo培训
  • discuz 门户网站模板网站seo关键词优化技巧
  • 买房子最好的网站做营销策划的公司
  • 网站新闻更新怎么设计12345浏览器网址大全
  • php做网站开源项目上海网络推广培训机构
  • 国外网站开发技术今天特大新闻最新消息
  • 试卷网站在线做百度近日收录查询
  • 定制旅游网站有哪些推广软文范文800字
  • 医疗保险网站开通建设汕头seo
  • 阿里云机器怎么做网站seo爱站网
  • 泉州专业网站营销今日重点新闻
  • 唐河做网站百度搜索下载
  • 设计师做单页的网站seo网络推广知识
  • 网站排名如何做免费舆情网站下载大全最新版
  • 利用大平台做网站外贸网站推广软件
  • 东莞高埗做网站哪个公司好网络营销教学网站
  • 企业网站建设原则seo推广沧州公司电话
  • 聊城网站优化网络推广seo整站优化方案案例