Design patterns 没有上下文类/ Java的策略模式

示例

以下是在没有上下文类的情况下使用策略模式的简单示例。有两种实现策略可以实现接口并以不同的方式解决相同的问题。EnglishTranslation类的用户可以通过指定所需的策略来调用translation方法并选择他们要用于翻译的策略。

// 策略界面
public interface TranslationStrategy {
    String translate(String phrase);
}

// 美国战略实施 
public class AmericanTranslationStrategy implements TranslationStrategy {

    @Override
    public String translate(String phrase) {
        return phrase + ", bro";
    }
}

// 澳大利亚战略实施     
public class AustralianTranslationStrategy implements TranslationStrategy {

    @Override
    public String translate(String phrase) {
        return phrase + ", mate";
    }
}

// 公开翻译方法的主类
public class EnglishTranslation {

    //  使用给定策略翻译短语
    public static String translate(String phrase, TranslationStrategy strategy) {
        return strategy.translate(phrase);
    }

    // 用法示例
    public static void main(String[] args) {

        // 使用AustralianTranslationStrategy类翻译短语
        String aussieHello = translate("Hello", new AustralianTranslationStrategy());
        // 你好伙伴

        // 使用AmericanTranslationStrategy类翻译短语    
        String usaHello = translate("Hello", new AmericanTranslationStrategy());
        // 喂兄弟
    }
}