행동 모드 - 전략 모드

3706 단어 알고리즘
전략 모드: 하나의 알고리즘 에 대해 모든 알고리즘 을 공동 인 터 페 이 스 를 가 진 독립 된 클래스 에 밀봉 하여 서로 교체 할 수 있 도록 합 니 다.정책 모드 는 알고리즘 을 클 라 이언 트 에 영향 을 주지 않 는 상황 에서 변경 할 수 있 습 니 다.
추상 적 인 정책 역할:
package org.strategy;    
/**   
 *          
 */   
public abstract class AbstractStrategy {    
   
    public abstract String calculate(float a,float b);    
} 

 구체 적 인 전략 캐릭터 1:
package org.strategy;    
/**   
 *          
 */   
public class SubStrategy extends AbstractStrategy{    
   
    public  String calculate(float a,float b){    
        float result = a-b;    
        return "     :" + result;    
    }    
}

 구체 적 인 전략 캐릭터 2:
package org.strategy;    
/**   
 *          
 */   
public class AddStrategy extends AbstractStrategy{    
   
    public  String calculate(float a,float b){    
        float result = a+b;    
        return "     :" + result;    
    }    
}   

 구체 적 인 전략 캐릭터 3:
package org.strategy;    
/**   
 *          
 */   
public class MultStrategy extends AbstractStrategy{    
   
    public  String calculate(float a,float b){    
        float result = a*b;    
        return "     :" + result;    
    }    
}   

 구체 적 인 전략 캐릭터 4:
package org.strategy;    
/**   
 *          
 */   
public class DivisionStrategy extends AbstractStrategy{    
   
    public  String calculate(float a,float b){    
        float result = a/b;    
        return "     :" + result;    
    }    
}    

 환경 역할:
package org.strategy;    
/**   
 *     ,            
 */   
public class ContextRole {    
   
    /**   
     *              
     */   
    private AbstractStrategy abstactStrategy;    
        
    public ContextRole(AbstractStrategy abstactStrategy){    
        this.abstactStrategy = abstactStrategy;    
    }    
        
    public String calculate(float a,float b) {    
        String result = abstactStrategy.calculate(a, b);    
        return result;    
    }    
}   

  클 라 이언 트:
package org.strategy;    
/**   
 *       
 */   
public class Test {    
        
    public static void main(String[] args){    
        float a = 200;    
        float b = 25;    
            
        ContextRole contextRole1 = new ContextRole(new AddStrategy());    
        System.out.println(contextRole1.calculate(a, b));    
            
        ContextRole contextRole2 = new ContextRole(new SubStrategy());    
        System.out.println(contextRole2.calculate(a, b));    
            
        ContextRole contextRole3 = new ContextRole(new MultStrategy());    
        System.out.println(contextRole3.calculate(a, b));    
            
        ContextRole contextRole4 = new ContextRole(new DivisionStrategy());    
        System.out.println(contextRole4.calculate(a, b));    
            
    }    
   
}    

 
정책 모드 장점:
1. 알고리즘 이나 행동 을 편리 하 게 동적 으로 바 꿀 수 있 습 니 다.
2. 다 중 조건 전이 문 사용 을 피한다.
정책 모드 단점: 1. 클 라 이언 트 는 모든 전략 류 를 알 고 어떤 전략 류 를 사용 할 지 스스로 결정 해 야 합 니 다.2. 많은 전략 류 를 만든다.

좋은 웹페이지 즐겨찾기