设计模式之使用Enum来实现strategy(策略模式系列2)

使用Enum实现枚举代码更为清晰和简单,适合于处理一些比较简单的业务流程。如果算法或者业务流程比较复杂,还是使用以前的吧。直接贴代码吧,同样是上篇文章中的例子。

?[Copy to clipboard] Download zuiniuwang.java
 
 
 
 
  1.  public  enum TestStrategy {  
  2.    
  3.     RepTempRuleOne{  
  4.         @Override  
  5.         public String replace(String oldString) {  
  6.             // TODO Auto-generated method stub  
  7.    
  8.             String newString=oldString.replaceFirst("a", "XXX");  
  9.             return newString  ;  
  10.    
  11.         }  
  12.     },  
  13.     RepTempRuleTwo{  
  14.    
  15.         @Override  
  16.         public String replace(String oldString) {  
  17.             // TODO Auto-generated method stub  
  18.             String newString=oldString.replaceFirst("n", "***");  
  19.             return newString  ;  
  20.         }  
  21.    
  22.     };  
  23.    
  24.     abstract String replace(String oldString);  
  25.    
  26.     public static void main(String... args){  
  27.         String oldString"www.zuiniuwang.com";  
  28.         RepTempRuleSolveEnum repTempRuleSolve=new RepTempRuleSolveEnum(TestStrategy.RepTempRuleOne);  
  29.         String  myNewString = repTempRuleSolve.getNewContext(oldString);  
  30.         System.out.println("newString  is "+myNewString);  
  31.         repTempRuleSolve.changeAlgorithm(TestStrategy.RepTempRuleTwo);  
  32.         myNewString = repTempRuleSolve.getNewContext(oldString);  
  33.         System.out.println("Second  New String   is "+myNewString);  
  34.    
  35.     }  
  36.    
  37. }  
  38.    
  39. class RepTempRuleSolveEnum {  
  40.     private TestStrategy strategy;  
  41.    
  42.     public RepTempRuleSolveEnum(TestStrategy rule){  
  43.           this.strategy=rule ;  
  44.     }  
  45.    
  46.     public String getNewContext(String oldString) {  
  47.         try {  
  48.             return strategy.replace(oldString);  
  49.         } catch (Exception e) {  
  50.             // TODO Auto-generated catch block  
  51.             e.printStackTrace();  
  52.         }  
  53.         return null ;  
  54.     }  
  55.    
  56.     public void changeAlgorithm(TestStrategy newAlgorithm) {  
  57.         strategy = newAlgorithm;  
  58.     }  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值