`

代码之美1:使用策略模式来编写solr 排序方法

 
阅读更多

 

代码之美1:使用策略模式来编写solr 排序方法

 

 

背景:

 

jsp中有排序方式几个方式选择(select下拉框方式),value 传入到controller-->manager 基于这个value 构造排序方法

 

原代码: if else if 判断方式

 


 

优点:

代码简单易懂

 

缺点:

新增排序方式的时候,需要增加常量和判断

 

 

 

使用策略模式 :

 


  

缺点:

增加了代码的理解度,enum(jdk1.4特性)相关知识才能明白

 

优点:

体现了oop的思想,层次更加清晰

扩展方便,

 

 

总结:

1.上面只是代表着一种思路,不要一味的认为非得用enum来替代if elseif,有时反而增加复杂度

2.策略模式使用场景

 

  • 以不同的格式保存文件;
  • 以不同的算法压缩文件;
  • 以不同的算法截获图象;
  • 以不同的格式输出同样数据的图形,比如曲线 或框图bar

 

 

 

 

  • 大小: 67.9 KB
  • 大小: 43.8 KB
  • 大小: 43.8 KB
分享到:
评论

相关推荐

    Solr 4.0 源代码实例

    通过查看此文件的源代码,你可以了解如何配置多个Solr核心,如何设置数据存储路径,以及如何配置集群状态和复制策略。 `solrconfig.xml`文件是每个Solr核心的配置文件,它控制着索引的创建、更新和查询行为。这个...

    大数据Solr二次开发.pdf

    在实践中,可能还需要关注性能优化,如调整索引策略、使用Sharding和Replication提升查询速度和数据冗余,以及使用SolrCloud模式来实现分布式搜索。此外,监控和日志分析也是保持系统稳定运行的重要环节。 总之,...

    Solr_1.4_Enterprise_Search_Server.pdf

    Solr提供了丰富的评分模型,如BM25、TF-IDF等,可以根据文档的相关性、热门程度或用户行为等多种因素来调整搜索结果的排序。开发人员可以通过调整评分策略,优化搜索结果的展示顺序,提升搜索质量。 ### 小结 ...

    lucene-2.9.3-src.zip

    - **迭代器模式**:在遍历索引和搜索结果时,使用迭代器简化了代码。 - **装饰器模式**:Analyzer和Filter类可以组合使用,形成一个装饰器链,增加新的处理逻辑。 4. **高级特性**: - **评分系统(Scoring)**...

    Python库 | django-haystack-1.2.4.tar.gz

    在实际开发中,`django-haystack` 通常与 Elasticsearch 或 Solr 这样的高性能搜索引擎结合使用,以满足大规模、高并发的搜索需求。然而,对于较小的项目,也可以使用 Whoosh 这样的本地存储搜索引擎。总之,`django...

    Java进阶路线

    注解提供了一种标准的方法来标记代码,用于元数据的添加或某些编译期/运行期的行为改变。例如,@Override 注解用于标记方法覆盖。 **9. 枚举** 枚举类型提供了一种定义固定数量常量的有效方式,同时提供了多种实用...

    黑马面试宝典知识点复习

    - **监控**:可以使用Quartz提供的API来监控任务执行状态。 #### MQ(消息队列) - **RabbitMQ**: - **定义**:一种消息中间件。 - **优点**:高可用性、支持多种语言、易于集成。 - **Exchange**:交换器,...

    Lucene.In.Action.2nd.Edition

    8. **实时搜索**:探讨如何在不断变化的数据中实现即时搜索,例如使用近实时搜索(NRT)模式。 9. **多核心和分布式搜索**:了解如何在多台机器上部署Lucene以构建大规模的分布式搜索系统,例如通过Solr或Elastic...

    Java3年后端工程师简历模板

    在实际工作中,该工程师在深圳市百欣办公用品连锁有限公司和深圳市优乐众惠科技有限公司的工作经历,体现了他从需求分析到功能实现的全程参与,包括代码编写、测试和优化,数据库设计、调优以及集群环境的搭建。...

    django-search-tutorial:Django Search教程源代码-Search source code

    在搜索功能中,我们通常会使用 `filter()` 或 `exclude()` 方法来根据用户输入的关键词筛选数据。 4. **模板(Templates)**:Django 的模板系统允许我们创建动态网页。在搜索场景下,我们需要设计一个界面,让用户...

    一个专业搜索公司关于lucene+solar资料(1)

    - **2.1.2 编写代码** - 实现网络爬虫模块,抓取指定网站的网页内容。 - 使用Lucene构建全文索引。 - 设计搜索接口,支持用户输入查询。 - **2.1.3 发布运行** - 部署应用程序到服务器或本地环境中。 - 运行...

    ir_programming_task

    Lucene提供了便捷的方法来实现这些操作,但需要注意对索引的同步管理,以避免数据不一致。 **10. 集成与扩展** 最后,Apache Lucene可以与其他Java项目轻松集成,如Spring框架,或者与其他语言通过JVM互操作。同时...

Global site tag (gtag.js) - Google Analytics