设计模式理解 - 降低耦合度、提高复用率、灵活性的设计模式

【Command 模式】

将这些命令封装成在一个类中,然后用户(调用者)再对这个类进行操作,这就是Command模式。

换句话说,本来用户(调用者)是直接调用这些命令的,使用Command模式,就是在这两者之间增加一个中间者,将这种直接关系拗断,同时两者之间都隔离,基本没有关系了。

目的是层次降低耦合度,提高可复用性。

【Mediator 中介者模式】

用一个中介对象来封装一系列关于对象交互行为.

为何使用Mediator?
各个对象之间的交互操作非常多;每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性.

J2EE 的 View Controller 就是 Form 和 业务层之间的中介者。

【Strategy 策略模式】

实现在运行期间,可以自由切换算法的目的。

示例:

规则基类(抽象类)
public   abstract   class  RepTempRule{

protected  String oldString = "" ;

public   void  setOldString(String oldString){
  
this .oldString = oldString; 
}

protected  String newString = "" ;
public  String getNewString(){
  
return  newString;
}



public   abstract   void  replace()  throws  Exception;

}


一号规则
public   class  RepTempRuleOne  extends  RepTempRule{


public   void  replace()  throws  Exception{ 

  
// replaceFirst是jdk1.4新特性 
  newString = oldString.replaceFirst( " aaa " " bbbb "
  System.out.println(
" this is replace one " );
   
}


}


二号规则
public   class  RepTempRuleTwo  extends  RepTempRule{


public   void  replace()  throws  Exception{ 

  newString
= oldString.replaceFirst( " aaa " " ccc "
  System.out.println(
" this is replace Two " );
   
}


}


算法解决类
public   class  RepTempRuleSolve { 

  
private  RepTempRule strategy;

  
public  RepTempRuleSolve(RepTempRule rule){
    
this .strategy = rule;
  }

  
public  String getNewContext(Site site,String oldString) {
    
return  strategy.replace(site,oldString);
  }

  
public   void  changeAlgorithm(RepTempRule newAlgorithm) {
    strategy 
=  newAlgorithm;
  }

}

调用示例

 
public   class  test{

设计模式理解 - 降低耦合度、提高复用率、灵活性的设计模式设计模式理解 - 降低耦合度、提高复用率、灵活性的设计模式

  
public   void  testReplace(){

  
// 使用第一套替代方案
  RepTempRuleSolve solver = new  RepTempRuleSolve( new  RepTempRuleSimple());
  solver.getNewContext(site,context); 

  
// 使用第二套

  solver
= new  RepTempRuleSolve( new  RepTempRuleTwo());
  solver.getNewContext(site,context); 

  }

设计模式理解 - 降低耦合度、提高复用率、灵活性的设计模式..

}

你可能感兴趣的:(设计模式)