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

网站开发实训总结h5直播网站

网站开发实训总结,h5直播网站,最挣钱的三个销售行业,建筑工程招工信息平台一、过滤器模式 概述 ​ 过滤器模式#xff08;Filter Pattern#xff09;或标准模式#xff08;Criteria Pattern#xff09;是一种设计模式#xff0c;这种模式允许开发人员使用不同的标准来过滤一组对象#xff0c;通过逻辑运算以解耦的方式把它们连接起来。这种类型的…一、过滤器模式 概述 ​ 过滤器模式Filter Pattern或标准模式Criteria Pattern是一种设计模式这种模式允许开发人员使用不同的标准来过滤一组对象通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式它结合多个标准来获得单一标准 主要解决在众多数据中根据特定的标准在一组数据中筛选出不同标准的数据 优缺点 优点 将对象的过滤、校验逻辑抽离出来降低系统的复杂度过滤规则可实现重复利用 缺点 性能较低每个过滤器对每一个元素都会进行遍历。如果有n个元素m个过滤器则时间复杂度为O(mn) 1. 各个角色介绍 1.1 过滤器接口Filter 定义了过滤器的基本方法具体的实现还要具体过滤器角色去参与在实际应用中可以扩展该接口以适应不同的过滤条件 1.2 具体命过滤器ConcreteFilter 实现了过滤器接口负责执行具体的过滤操作。对数据进行过滤 1.3 过滤链FilterChain 将多个过滤器按照一定的顺序组合起来形成一个过滤器链依次对数据进行过滤 2. UML图 ​ 首先创建一个 Shape 对象作为过滤的接口 IFilter然后实现该接口创建对应的 CornerFilter、CurveFilter、EdgeFilter具体过滤器。然后创建带有过滤器的过滤链 FilterChain基于各种标准和它们的结合来过滤 Shape 对象的列表 ​ 3. 具体例子和代码 角色分配 Shape形状IFilter过滤器接口 CornerFilter角过滤器实现过滤器接口EdgeFilter边过滤器实现过滤器接口CurveFilter曲线过滤器实现过滤器接口 FilterChain过滤链 3.1 形状 Instruction package com.vinjcent.prototype.filter;import io.swagger.annotations.ApiModelProperty;/*** author vinjcent* description 形状*/ public class Shape {ApiModelProperty(形状名称)private String name;ApiModelProperty(是否有角)private Boolean isCorner;ApiModelProperty(边数)private Integer edges;ApiModelProperty(线构成类型)private String type;public Shape(String name, Boolean isCorner, Integer edges, String type) {this.name name;this.isCorner isCorner;this.edges edges;this.type type;}public String getName() {return name;}public void setName(String name) {this.name name;}public Boolean getCorner() {return isCorner;}public void setCorner(Boolean corner) {isCorner corner;}public Integer getEdges() {return edges;}public void setEdges(Integer edges) {this.edges edges;}public String getType() {return type;}public void setType(String type) {this.type type;} } 3.2 过滤接口及其实现类 IFilter package com.vinjcent.prototype.filter;import java.util.List;/*** author vinjcent* description 过滤接口*/ public interface IFilter {/*** 适配标准形状** param shapes 形状列表* return 适配的形状列表*/ListShape adaptFilter(ListShape shapes); } CornerFilter package com.vinjcent.prototype.filter;import java.util.ArrayList; import java.util.List;/*** author vinjcent* /* description 角过滤器*/ public class CornerFilter implements IFilter {Overridepublic ListShape adaptFilter(ListShape shapes) {// 符合具有角的形状ListShape cornerFilter new ArrayList();for (Shape shape : shapes) {if (shape.getIsCorner()) {cornerFilter.add(shape);}}return cornerFilter;}} EdgeFilter package com.vinjcent.prototype.filter;import java.util.ArrayList; import java.util.List;/*** author vinjcent* /* description 边过滤器*/ public class EdgeFilter implements IFilter {Overridepublic ListShape adaptFilter(ListShape shapes) {// 边数大于0的形状ListShape edgeFilter new ArrayList();for (Shape shape : shapes) {if (shape.getEdges() 0) {edgeFilter.add(shape);}}return edgeFilter;}} CurveFilter package com.vinjcent.prototype.filter;import java.util.ArrayList; import java.util.List;/*** author vinjcent* /* description 曲线过滤器*/ public class CurveFilter implements IFilter {Overridepublic ListShape adaptFilter(ListShape shapes) {// 曲线ListShape curveFilter new ArrayList();for (Shape shape : shapes) {if (shape.getType().toLowerCase().contains(curve)) {curveFilter.add(shape);}}return curveFilter;}} 3.3 过滤链 FilterChain package com.vinjcent.prototype.filter;import com.vinjcent.api.utils.CollectionUtils; import io.swagger.annotations.ApiModelProperty; import lombok.Data;import java.util.ArrayList; import java.util.List;/*** author vinjcent* description 过滤链*/ Data public class FilterChain {ApiModelProperty(过滤器集合)private ListIFilter filters;public FilterChain(ListIFilter filters) {this.filters filters;}public ListShape doFilter(ListShape shapes) {if (CollectionUtils.isEmpty(filters) || CollectionUtils.isEmpty(shapes)) {return new ArrayList();}ListShape afterFilterShapes new ArrayList(shapes);// 执行过滤for (IFilter filter : filters) {afterFilterShapes filter.adaptFilter(afterFilterShapes);}return afterFilterShapes;} } 3.4 测试主函数 package com.vinjcent.prototype.filter;import java.util.ArrayList; import java.util.Arrays; import java.util.List;/*** author vinjcent* 过滤模式*/ public class Main {public static void main(String[] args) {ListShape shapes new ArrayList();shapes.add(new Shape(Circle, false, 0, Curve));shapes.add(new Shape(Triangle, true, 3, Straight));shapes.add(new Shape(Rectangle, true, 4, Straight));shapes.add(new Shape(Square, true, 4, Straight));shapes.add(new Shape(Oval, false, 0, Curve));shapes.add(new Shape(Sector, true, 2, Curve and Straight));CornerFilter cornerFilter new CornerFilter();EdgeFilter edgeFilter new EdgeFilter();CurveFilter curveFilter new CurveFilter();// 具有角、边的形状FilterChain cornerAndEdgeFilterChain new FilterChain(Arrays.asList(cornerFilter, edgeFilter));ListShape cornerAndEdgeShapes cornerAndEdgeFilterChain.doFilter(shapes);System.out.println(具有角、边的形状:);printResult(cornerAndEdgeShapes);// 具有角、曲线的形状FilterChain cornerAndCurveFilterChain new FilterChain(Arrays.asList(cornerFilter, curveFilter));ListShape cornerAndCurveShapes cornerAndCurveFilterChain.doFilter(shapes);System.out.println(\n具有角、曲线的形状:);printResult(cornerAndCurveShapes);// 具有边、曲线的形状FilterChain edgeAndCurveFilterChain new FilterChain(Arrays.asList(edgeFilter, curveFilter));ListShape edgeAndCurveShapes edgeAndCurveFilterChain.doFilter(shapes);System.out.println(\n具有边、曲线的形状:);printResult(edgeAndCurveShapes);}public static void printResult(ListShape shapes) {for (Shape shape : shapes) {System.out.println(Shape{ name shape.getName() \ , isCorner shape.getIsCorner() , edges shape.getEdges() , type shape.getType() \ });}}} 测试结果 4. 使用场景 在某些场合比如要对数据进行过滤不仅仅局限于一个标准的情况下进行分组例如数据查询、日志过滤、请求过滤
http://www.hkea.cn/news/14437322/

相关文章:

  • 美丽乡村建设发展论坛网站网站策划书模板大全
  • 垂直电商网站建设网站设计需要学什么软件
  • 晋城 网站建设wordpress首页404
  • 辽宁建设厅证件查询网站深圳外贸网站设计公司
  • 创立一个网站要多少钱四川省中国建设银行招聘信息网站
  • 自己做网站可以吗微信公众平台开发工具
  • 网站开发p6淘宝代运营公司哪家好
  • 万网空间存放两个网站百度推广费用一天多少钱
  • 三亚凤凰镇网站建设兼职招聘网青岛圭谷网站建设公司怎么样
  • 网站怎么做跳转好看的论坛网站模板
  • 山西网站推潍坊新闻头条最新消息
  • 四川游戏seo整站优化绿色食品网站模板
  • 如何建网站开网店比较公司网站与营销网站的不同
  • 怎么做网站的浏览栏品牌建设费用包括哪些?
  • 南阳东莞网站建设公司哪家好网站域名类型
  • 大连科技官方网站网站上传wordpress
  • 北京网站维护浩森宇特湖北高速公路建设网站
  • 做网站找模板资讯网站如何做聚合
  • 鄱阳电商网站建设房地产网站建设背景
  • 请详细说明网站开发流程及原则怎么做网站咨询
  • 网站有源代码如何做seo网站建设合同需要印花税
  • 建微网站需要购买官网主机吗网站建设的考虑
  • 网站的信息量能做什么怎样给网站加外链
  • 怎样选择网站的关键词网站由什么组成
  • 网站建设收费明细表医疗网站建设行情
  • wordpress网站排名杭州公司的网站建设公司
  • 软件开发工程师就业前景怎样做网站关键词优化
  • 网站建设三方协议安徽安庆网站建设公司
  • 公关网站建设如何卸载win上的wordpress
  • 普陀网站建设哪家便宜网络营销方式案例及分析