> Java > java지도 시간 > 본문

Java 디자인 패턴: 전략 패턴 및 구현 방법에 대한 자세한 설명

WBOY
풀어 주다: 2023-04-24 22:55:06
앞으로
1366명이 탐색했습니다.

1. 전략 패턴이란 무엇인가요?

일련의 알고리즘을 정의하고 하나씩 캡슐화하여 상호 교환 가능하게 만듭니다.

일반인의 관점에서 보면 동일한 기능을 달성하는 데는 여러 가지 방법이나 전략이 있습니다. 이러한 방법이나 전략은 추출되고 캡슐화될 수 있습니다. 어떤 방법을 사용해야 하든 해당 객체를 전달하면 됩니다.

2. 구현 방법

1) 여러 추상 메서드를 정의하는 전략 인터페이스를 정의합니다.

2) 구체적인 전략, 전략 인터페이스를 구현하고 인터페이스에 정의된 메소드를 구현합니다.

3) 호출 클래스를 캡슐화하고 전략 인터페이스에 대한 참조를 보유합니다. 사용자가 특정 기능을 완료해야 하는 경우 해당 전략 개체를 이 클래스에 전달하고 메서드를 호출하기만 하면 됩니다.

3. 코드 구현

파일 암호화 및 복호화를 예로 들어 보겠습니다.

1) 전략 인터페이스, 전략 이름 정의

/**
 * 策略接口
 */
public interface EncodeStrategy {
    /**
     * 加密算法
     * @param file
     */
    public abstract void encryptFile(File file);
    /**
     * 解密算法
     * @param file
     * @return
     */
    public abstract String decryptFile(File file);
}
로그인 후 복사

2) 특정 전략 클래스 1

/**
 * 具体策略
 */
public class AESEncode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
로그인 후 복사

특정 전략 클래스 2

public class Base64Encode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
로그인 후 복사

3) 캡슐화 호출 클래스

/**
 * 封装调用类,需要用到具体策略,只需传入其对象即可
 */
public class FileEncode{
    /**
     * 策略接口的引用
     */
    EncodeStrategy strategy;
    public FileEncode(EncodeStrategy strategy){
        this.strategy = strategy;
    }
    //根据传入的具体策略对象,调用其方法
    public void encryptFile(File file) {
        strategy.encryptFile(file);
    }
    //根据传入的具体策略对象,调用其方法
    public String decryptFile(File file) {
        return strategy.decryptFile(file);
    }
}
로그인 후 복사

4) 테스트 코드

public class TestStrategy {
    public static void main(String args []){
        File file = new File("d:\test.txt");
        //调用策略1 实现加密
        FileEncode fileEncode = new FileEncode(new AESEncode());
        fileEncode.encryptFile(file);
        //调用策略2 实现加密
        fileEncode = new FileEncode(new Base64Encode());
        fileEncode.encryptFile(file);
    }
}
로그인 후 복사

위 내용은 Java 디자인 패턴: 전략 패턴 및 구현 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿