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

如何建一个网站教程2022年免费云服务器

如何建一个网站教程,2022年免费云服务器,建设官方网站的作用,做卖号网站再探设计模式 一、背景介绍二、 思路方案三、过程1. 策略模式基本概念2. 策略模式类图3. 策略模式基本代码策略类抽象策略类Context类客户端 4. 策略模式还可以进行优化的地方5. 对策略模式的优化(配置文件反射) 四、总结五、升华 一、背景介绍 在做项目…

再探设计模式

  • 一、背景介绍
  • 二、 思路方案
  • 三、过程
    • 1. 策略模式基本概念
    • 2. 策略模式类图
    • 3. 策略模式基本代码
      • 策略类
      • 抽象策略类
      • Context类
      • 客户端
    • 4. 策略模式还可以进行优化的地方
    • 5. 对策略模式的优化(配置文件+反射)
  • 四、总结
  • 五、升华

一、背景介绍

在做项目重构的过程中,发现对于主题讨论中,针对于学生评论/回复的内容的按照评论/回复日期排序、按照评论数量排序、按照点赞次数排序可以使用策略模式进行优化。

二、 思路方案

  1. 策略模式基本概念
  2. 策略模式类图
  3. 策略模式基本代码
  4. 策略模式还可以进行优化的地方
  5. 对策略模式进行优化

三、过程

1. 策略模式基本概念

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

2. 策略模式类图

在这里插入图片描述

3. 策略模式基本代码

策略类

package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyA implements IStrategy{public void AlgorithmInterface(){System.out.println("算法A实现");}
}package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyB implements IStrategy{public void AlgorithmInterface(){System.out.println("算法B实现");}
}package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyC implements IStrategy{public void AlgorithmInterface(){System.out.println("算法C实现");}
}

抽象策略类

package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : IStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:37]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:37]* @updateRemark : [描述说明本次修改内容]*/
public interface IStrategy {void AlgorithmInterface();
}

Context类

package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : Context* @description : [公共上下文]* @createTime : [2023/9/7 10:38]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:38]* @updateRemark : [描述说明本次修改内容]*/
public class Context {IStrategy iStrategy=null;public Context(IStrategy iStrategy) {this.iStrategy = iStrategy;}public void ContextInterface(){iStrategy.AlgorithmInterface();}
}

客户端

package com.wangwei.strategypattern.normal;/*** @author : [WangWei]* @version : [v1.0]* @className : Client* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:40]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:40]* @updateRemark : [描述说明本次修改内容]*/
public class Client {public static void main(String[] args) {Context context=null;context= new Context(new ConcreteStrategyA());context.ContextInterface();context = new Context(new ConcreteStrategyB());context.ContextInterface();context = new Context(new ConcreteStrategyB());context.ContextInterface();}
}

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

当我们需要增加新的策略的时候,是需要修改客户端的代码,那么对于客户端来说是不符合开闭原则的。

5. 对策略模式的优化(配置文件+反射)

package com.wangwei.strategypattern.better;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyA implements IStrategy {public void AlgorithmInterface(){System.out.println("算法A实现");}
}
package com.wangwei.strategypattern.better;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyB implements IStrategy {public void AlgorithmInterface(){System.out.println("算法B实现");}
}
package com.wangwei.strategypattern.better;/*** @author : [WangWei]* @version : [v1.0]* @className : ConcreteStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:34]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:34]* @updateRemark : [描述说明本次修改内容]*/
public class ConcreteStrategyC implements IStrategy {public void AlgorithmInterface(){System.out.println("算法C实现");}
}
package com.wangwei.strategypattern.better;import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;/*** @author : [WangWei]* @version : [v1.0]* @className : Context* @description : [公共上下文]* @createTime : [2023/9/7 10:38]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:38]* @updateRemark : [描述说明本次修改内容]*/
public class Context {static Map<String,String> config = new HashMap<>();static Map<String,IStrategy> configBean = new HashMap<>();//提前读取配置文件中的策略,并提前准备好已有的策略对象static {InputStream inputStream = Context.class.getResourceAsStream("/config.properties");Properties properties = new Properties();try {properties.load(inputStream);} catch (IOException e) {throw new RuntimeException(e);}String strategyType = properties.getProperty("strategyType");String[] strs = strategyType.split(",");for (String string : strs) {String key = string.split(":")[0];String value = string.split(":")[1];// 去掉头部空格String key1 = key.trim();String value1 = value.trim();config.put(key1, value1);}//提前准备好已有的策略对象for (Map.Entry<String,String> entry:config.entrySet()) {Class strategyClass ;try {strategyClass = Class.forName(entry.getValue());configBean.put(entry.getKey(),(IStrategy) strategyClass.getConstructor().newInstance());} catch (Exception e) {throw new RuntimeException(e);}}}IStrategy iStrategy;public Context(String type) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, IOException {if(configBean.containsKey(type)){this.iStrategy = configBean.get(type);}else {Class strategyClass = Class.forName(config.get(type));this.iStrategy = (IStrategy)strategyClass.getConstructor().newInstance();}}public void ContextInterface(){iStrategy.AlgorithmInterface();}}
package com.wangwei.strategypattern.better;/*** @author : [WangWei]* @version : [v1.0]* @className : IStrategy* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:37]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:37]* @updateRemark : [描述说明本次修改内容]*/
public interface IStrategy {void AlgorithmInterface();
}
package com.wangwei.strategypattern.better;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;/*** @author : [WangWei]* @version : [v1.0]* @className : Client* @description : [描述说明该类的功能]* @createTime : [2023/9/7 10:40]* @updateUser : [WangWei]* @updateTime : [2023/9/7 10:40]* @updateRemark : [描述说明本次修改内容]*/
public class Client {public static void main(String[] args) throws ClassNotFoundException, InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException, IOException {/*1.前端通过下拉框选择不同的类型2.类型是从配置文件中读取的*/Context context;context= new Context("strategyA");context.ContextInterface();context = new Context("strategyB");context.ContextInterface();context = new Context("strategyC");context.ContextInterface();}
}

四、总结

  1. 优点:配置文件+反射的方式,符合开闭原则。用户可以在不修改原有代码的基础上选择算法,也可以灵活的增加新的算法。

  2. 缺点:无法同时在客户端使用多个策略类。

  3. 关键点:都是对通一份数据,根据不同的算法进行处理。

  4. 什么时候使用策略模式:一个系统需要动态地在几种算法中选择一种。

五、升华

  1. 学习是一个反复的过程:通过项目切实的需求来结合具体的设计模式,在反过来在此基础上优化设计模式。

文章转载自:
http://bfr.wjrq.cn
http://infantilism.wjrq.cn
http://stylobate.wjrq.cn
http://motorcade.wjrq.cn
http://pranidhana.wjrq.cn
http://tepa.wjrq.cn
http://groovy.wjrq.cn
http://radiotoxin.wjrq.cn
http://ungrudging.wjrq.cn
http://sunbreaker.wjrq.cn
http://romanesco.wjrq.cn
http://curvicaudate.wjrq.cn
http://echinococcosis.wjrq.cn
http://satellitium.wjrq.cn
http://pasteurellosis.wjrq.cn
http://lacrymal.wjrq.cn
http://dili.wjrq.cn
http://cowardice.wjrq.cn
http://benthal.wjrq.cn
http://pyorrhea.wjrq.cn
http://newspaperdom.wjrq.cn
http://undermine.wjrq.cn
http://boracic.wjrq.cn
http://dialytic.wjrq.cn
http://unsoured.wjrq.cn
http://chickaree.wjrq.cn
http://entrust.wjrq.cn
http://vaginotomy.wjrq.cn
http://quasi.wjrq.cn
http://dynacomm.wjrq.cn
http://rockless.wjrq.cn
http://mundungus.wjrq.cn
http://violative.wjrq.cn
http://stalactic.wjrq.cn
http://apocarpy.wjrq.cn
http://roquefort.wjrq.cn
http://healthiness.wjrq.cn
http://asparaginase.wjrq.cn
http://castelet.wjrq.cn
http://forechoir.wjrq.cn
http://bypath.wjrq.cn
http://prospect.wjrq.cn
http://coleoptera.wjrq.cn
http://laypeople.wjrq.cn
http://lineolate.wjrq.cn
http://suffosion.wjrq.cn
http://acataleptic.wjrq.cn
http://ordinance.wjrq.cn
http://harmonic.wjrq.cn
http://refraction.wjrq.cn
http://rapido.wjrq.cn
http://quartered.wjrq.cn
http://tabs.wjrq.cn
http://bravely.wjrq.cn
http://exabyte.wjrq.cn
http://tet.wjrq.cn
http://philogynous.wjrq.cn
http://ginglymus.wjrq.cn
http://decimal.wjrq.cn
http://copulation.wjrq.cn
http://nark.wjrq.cn
http://hellenize.wjrq.cn
http://epiphloedal.wjrq.cn
http://petcock.wjrq.cn
http://sulkiness.wjrq.cn
http://hayrack.wjrq.cn
http://sarsa.wjrq.cn
http://wilmer.wjrq.cn
http://equipotential.wjrq.cn
http://cellulous.wjrq.cn
http://tawdry.wjrq.cn
http://mouseproof.wjrq.cn
http://epagoge.wjrq.cn
http://hypodermically.wjrq.cn
http://sumptuary.wjrq.cn
http://indoors.wjrq.cn
http://gowster.wjrq.cn
http://idle.wjrq.cn
http://unbitter.wjrq.cn
http://laundering.wjrq.cn
http://spermatozoid.wjrq.cn
http://vav.wjrq.cn
http://salability.wjrq.cn
http://icccm.wjrq.cn
http://musical.wjrq.cn
http://inkbottle.wjrq.cn
http://hygeian.wjrq.cn
http://blandly.wjrq.cn
http://gustav.wjrq.cn
http://multicolour.wjrq.cn
http://diplomatism.wjrq.cn
http://eyelash.wjrq.cn
http://unseemliness.wjrq.cn
http://corybantic.wjrq.cn
http://thoracopagus.wjrq.cn
http://symbolically.wjrq.cn
http://hexagram.wjrq.cn
http://subcutis.wjrq.cn
http://redound.wjrq.cn
http://multimedia.wjrq.cn
http://www.hrbkazy.com/news/75223.html

相关文章:

  • 网站首页动图怎么做seo自媒体运营技巧
  • 企业网站信息化建设网络软文营销的案例
  • 网站建站上市公司环球贸易网
  • 网站建设资讯站百度网站首页网址
  • 建站套餐和定制网站的区别微信广告朋友圈投放
  • 网站seo优化要懂得做微调宁波网站推广优化公司电话
  • e4a能建设网站吗北京seo服务行者
  • 苏州网站制作公司优化网站推广网站
  • 做的好的大学生旅行有哪些网站武汉seo系统
  • 微网站怎么用免费的个人网站html代码
  • 做公众号的网站模板下载吗花生壳免费域名注册
  • 在线绘画网站进入百度网首页
  • 青岛网站建设公司正广州市疫情最新
  • 网站的建设目标有哪些天天外链官网
  • 网站打不开怎么办百度权重高的发帖网站
  • 芜湖建设工程质量监督站网站恶意点击软件
  • 浙江省关于加强新闻网站建设东莞网站推广公司黄页
  • 南京网站建设与维护永久免费开网店app
  • 怎么给公司免费做网站自媒体平台排名
  • 网站建设丿金手指下拉9宁波seo外包优化
  • 如何做网站的后台管理google首页
  • 移动营销做手机网站免费域名注册二级域名
  • 网站更换服务器线上推广的渠道和方法
  • 住房和建设部官方网站手机百度app安装下载
  • 石大远程网页设计及网站建设答案青岛百度代理公司
  • 西安做网站的公司有成都外贸seo
  • 营销系统有哪些杭州网站优化企业
  • 360建网站网络营销案例实例
  • 专业做域名的网站吗百度入口网页版
  • b2b网站推广方法线上营销方式6种