디자인 패턴 (10) 전략 패턴

기사 디렉토리

전략 패턴이란

전략 패턴은 행동 디자인 패턴입니다. 모든 프로그램의 목적은 문제를 해결하는 것입니다. 문제를 해결하기 위해서는 특정 알고리즘을 작성해야 하며 전략 모드는 알고리즘을 전체적으로 대체할 수 있습니다.

예:

기능적 인터페이스 및 람다 식과 같은 Java 전략 패턴의 예도 있습니다.

예: 문자열 대소문자 변환

StringPrintStragegy 전략 인터페이스

package BehavioralPattern.StrategyMode;

/**
 * 字符串打印策略
 */

public interface StringPrintStragegy {
    
    
    /**
     * 字符串转换
     */
    String changeString(String s);
}

ToLowerCaseStragegy 문자열을 소문자로 전략

package BehavioralPattern.StrategyMode;

/**
 * 字符串转小写
 */

public class ToLowerCaseStragegy implements StringPrintStragegy{
    
    
    @Override
    public String changeString(String s) {
    
    
        return s.toLowerCase();
    }
}

ToUpperCaseStragegy 문자열을 대문자로 전략

package BehavioralPattern.StrategyMode;

/**
 * 字符串转大写
 */

public class ToUpperCaseStragegy implements StringPrintStragegy{
    
    
    @Override
    public String changeString(String s) {
    
    
        return s.toUpperCase();
    }
}

StringChangeTool 문자열 변환 도구(전략 사용)

package BehavioralPattern.StrategyMode;

/**
 * 字符串转换工具
 */

public class StringChangeTool {
    
    

    private StringPrintStragegy stragegy;

    public StringChangeTool(StringPrintStragegy stragegy) {
    
    
        this.stragegy = stragegy;
    }

    public String change(String s){
    
    
        return stragegy.changeString(s);
    }
}

기본

package BehavioralPattern.StrategyMode;

/**
 * Main
 */

public class Main {
    
    
    public static void main(String[] args) {
    
    
        String s = "HelLo WoRld";
        //使用策略
        StringChangeTool lowerTool = new StringChangeTool(new ToLowerCaseStragegy());
        StringChangeTool upperTool = new StringChangeTool(new ToUpperCaseStragegy());
        System.out.println(lowerTool.change(s));
        System.out.println(upperTool.change(s));
    }
}

결과
여기에 이미지 설명 삽입

요약하다

전략 패턴의 핵심 아이디어는 계산 방법에서 변경하기 쉬운 알고리즘을 추출하여 "전략" 매개변수로 전달하여 새로운 전략이 원래 논리를 수정할 필요가 없도록 하는 것입니다. 전략 패턴은 또한 코드에서 if-else를 대체하는 좋은 방법입니다.

템플릿 방법 모드와 다름:
템플릿 방법 모드 --------- 전체 프로세스
전략 모드 --------- 프로세스의 특정 알고리즘

추천

출처blog.csdn.net/weixin_43636205/article/details/130112852