package com.cheng.bigtalkdesignpatterns.interpreter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import com.cheng.designpatternstudy.R; public class BTDPInterpreterActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_btdp_interpreter); } public void onClick(View v) { PlayContext context = new PlayContext(); // 音乐-上海滩 System.out.println("上海滩:"); context.setPlayText("T 500 O 2 E 0.5 G 0.5 A 3 E 0.5 G 0.5 D 3 E 0.5 G 0.5 A 0.5 O 3 C 1 O 2 A 0.5 G 1 C 0.5 E 0.5 D 3 "); Expression expression = null; try { while (context.getPlayText().length() > 0) { String str = context.getPlayText().substring(0, 1); switch (str) { case "O": expression = new Scale(); break; case "T": expression = new Speed(); break; case "C": case "D": case "E": case "F": case "G": case "A": case "B": case "P": expression = new Note(); break; } expression.interpret(context); } } catch (Exception e) { e.printStackTrace(); } } }