간편한 사용과 전략 패턴의 예를 들어 설명을 분석하는

1. 소개

컴퓨터 프로그래밍에서, (또한 정책 패턴이라고도 함) 전략 패턴은 런타임에 알고리즘을 선택 할 수있는 행동 소프트웨어 디자인 패턴이다. 대신 직접 하나의 알고리즘을 구현하는 코드 사용에 대한 알고리즘의 가족에있는 상태로 런타임 지시를 받는다.
위키 피 디아에서 --Quote

컴퓨터 프로그래밍에서, (또한 전략 패턴이라고 함) 정책 모드는 런타임에 선택 알고리즘을 지원하는 행동 소프트웨어 디자인 패턴이다. 연산 명령이 아닌 하나의 알고리즘을받는 코드는 직접 알고리즘에 사용되는 일련의 명령을 구현했습니다.

[화상 업로드 스테이션 외부 (화상 c98784-1573659608688)]

전략 패턴 2. 특성

장점 : 1, 알고리즘은 자유롭게 전환 할 수있다. 2, 여러 조건의 사용을 방지 할 수 있습니다. 3, 좋은 확장 성을 제공합니다.

단점 : 1 전략은 증가 할 것이다. 이 모든 정책 클래스는 외부 노출의 필요합니다.

사용 시나리오 : 1, 많은 클래스는, 그들의 행동 그들 사이의 차이는, 다음 전략 패턴은 객체가 동적으로 행동의 수의 작업을 선택할 수 있습니다 사용하는 시스템이있는 경우. 2, 시스템이 필요 동적으로 여러 알고리즘 중 하나를 선택합니다. 즉 적합하지 모드 인 경우 객체가 행동의 많은 경우 3. 이러한 행위를 달성하기 위해 여러 조건 선택 문을 사용했다.

참고 : 정책이 네 가지 이상의 시스템이, 우리는 혼합 모드, 문제 해결 전략 클래스 확장의 사용을 고려해야합니다.

3. 관련 예

예를 들면 여기에서는 산술 연산에 의해 전략 패턴을 사용하여, 기본 클래스의 알고리즘은, 서브 클래스 관련 산술 로직 구현, 우리는 어떤 알고리즘 적절한 서브 클래스를 선택하여 측정 하였다.

interface Strategy {
    int doOperation(int num1, int num2);
}

class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        System.out.println("add: " + num1 + "+" + num2);
        return num1 + num2;
    }
}

class OperationSubtract implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        System.out.println("substract: " + num1 + "-" + num2);
        return num1 - num2;
    }
}

class OperationMultiply implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        System.out.println("multiply: " + num1 + "*" + num2);
        return num1 * num2;
    }
}


class OperationDivide implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        System.out.println("divide: " + num1 + "/" + num2);
        return num1 / num2;
    }
}

class Context {

    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public int executeStrategy(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}

public class Demo {

    public static void main(String[] args) {
        Context context1 = new Context(new OperationAdd());
        int result1 = context1.executeStrategy(9, 3);
        System.out.println("strategy result: "+result1+"\n");

        Context context2 = new Context(new OperationMultiply());
        int result2 = context2.executeStrategy(9, 3);
        System.out.println("strategy result: "+result2+"\n");

        Context context3 = new Context(new OperationSubtract());
        int result3 = context3.executeStrategy(9, 3);
        System.out.println("strategy result: "+result3+"\n");
    }
}
출력 :
add: 9+3
strategy result: 12

multiply: 9*3
strategy result: 27

substract: 9-3
strategy result: 6

추천

출처www.cnblogs.com/charlypage/p/11854170.html