NBA之解释器模式

168 阅读1分钟

Design Pattern:

Interpreter pattern provides a way to evaluate language grammar or expression. 模式:解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式

故事场景: //教练准备使用普林斯顿打发 但是NBA球队有中国人,又有法国人的 只能靠google翻译交流了

战术抽象
  public interface Tactics {
  
      //使用的战术
      void play(String tactics);
  }

google解释器 中国翻译,法国翻译
//ConcreteTactics 像是一个google翻译机器
public class ConcreteTactics implements Tactics {
  
     @Override
     public void play(String tactics) {
         System.out.println(tactics);
     }
}

// 中国战术 :把教练说的话变成中文 需要带上google翻译,然后将教练说的话输进去,google翻译输出中文
public class ChineseTactics implements Tactics{

    Tactics tactics;

    public ChineseTactics(Tactics tactics) {
        this.tactics = tactics;
    }

    @Override
    public void play(String tacticsStr) {
        tactics.play("我们使用"+tacticsStr+"战术!!!");
    }
}

// 法国战术 :把教练说的话变成法语 需要带上google翻译,然后将教练说的话输进去,google翻译输出法语
public class FranceTactics implements Tactics{

    Tactics tactics;

    public FranceTactics(Tactics tactics) {
        this.tactics = tactics;
    }

    @Override
    public void play(String tacticsStr) {
        tactics.play("On utilise des tactiques de "+tacticsStr +"!!!");
    }
}


实验的开始
    public class InterpreterDemo {
    
        public static void main(String[] args) {
    
          
            //这像是个google翻译
            ConcreteTactics aTactics = new ConcreteTactics();
            //法国人带一个
            FranceTactics fTactics = new FranceTactics(aTactics);
            //中国人也带一个
            ChineseTactics cTactics = new ChineseTactics(aTactics);
    
            String tactics = "Princeton";
            System.out.print("英译法解释器-->");
            fTactics.play(tactics);
    
            System.out.print("英译中解释器-->");
            cTactics.play(tactics);
        }
    }

结果