论坛首页 Java企业应用论坛

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

浏览 2377 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-10-26  

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

 

 

背景:

 

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

 

原代码: if else if 判断方式

 


 

优点:

代码简单易懂

 

缺点:

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

 

 

 

使用策略模式 :

 



  

缺点:

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

 

优点:

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

扩展方便,

 

 

总结:

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

2.策略模式使用场景

 

<!--[if !supportLists]-->o    <!--[endif]-->以不同的格式保存文件;

<!--[if !supportLists]-->o    <!--[endif]-->以不同的算法压缩文件;

<!--[if !supportLists]-->o    <!--[endif]-->以不同的算法截获图象;

<!--[if !supportLists]-->o    <!--[endif]-->以不同的格式输出同样数据的图形,比如曲线 或框图bar

 

  • 大小: 67.9 KB
  • 大小: 43.8 KB
  • 大小: 43.8 KB
   发表时间:2012-10-28   最后修改:2012-10-28
嗯,就像我们平时把dao抽象成接口,也算是策略模式吧
0 请登录后投票
   发表时间:2012-10-29  
finallygo 写道
嗯,就像我们平时把dao抽象成接口,也算是策略模式吧


策略模式(Strategy):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。


实际上,策略模式是采用了面向对象的继承和多态机制,客户根据自己的业务需要调用上下文(Context 类)获得相应的具体策略、算法实现。



虽说我们目前 dao抽象成接口 ,但是 大部分情况下面 一般来说  一个接口一个实现类(是吧?)  没能做到相互替换



枚举策略模式 是策略模式中的一种


0 请登录后投票
   发表时间:2012-10-30  
不错,一直不知道enum可以这么用。学习了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics