|
Design Pattern |
|
The UML class diagram of Interpreter design
pattern can be shown as:
In the given diagram, An abstract base class
specifies the method interpret(). Each
concrete subclass implements interpret() by
accepting (as an argument) the current state
of the language stream, and adding its
contribution to the problem solving process.
To make this thing clear, let’s take an example
that can take the Sa, Re, Ga, Ma etc and
produce the sounds for the frequencies.
The “musical notes” is an Interpreted
Language. The musicians read the notes,
interpret them according to “Sa, Re, Ga, Ma…”
or “Do, Re, Me… “, etc.
For Sa, the frequency is 256 Hz, similarly, for
Re, it is 288Hz and for Ga, it is 320 Hz and so
on. In this case, we need these values set
somewhere, so that when the system
encounters any one of these messages, the
related frequency can be sent to the
instrument for playing the frequency.
We can have it at one of the two places, one
is a constants file, “token=value” and the
other one being in a properties file. The
properties file can give us more flexibility to
change it later if required.
This is how a properties file will look like:
MusicalNotes.properties
Sa=256
Re=288
Ga=320
Ma=352
. . . . .
|
|
After that we make a class
NotesInterpreter.java to take an input from
the key pressed by user and set those value
as a global value. Then we make a method
getFrequency for getting the frequency for
the note input by the user e.g. if user enter
Re, it will return 288.
NotesInterpreter.java
package bahavioral.interpreter;
public class NotesInterpreter {
Private Note note;
public void getNoteFromKeys(Note note) {
Frequency freq = getFrequency(note);
sendNote(freq);
}
private Frequency getFrequency(Note note) {
return freq;
}
private void sendNote(Frequency freq) {
NotesProducer producer = new
NotesProducer();
producer.playSound(freq);
}
}
Here we need to make another class in which
the method produces the sound wave of the
frequency it gets.
NotesProducer.java
package
bahavioral.interpreter;
public class NotesProducer {
Private Frequency freq;
public NotesProducer() {
this.freq = freq;
}
public void playSound(Frequency freq) {
}
}
|
|
|
Dec 2007 | Java Jazz Up | 68 |
|
|
View All Topics |
All Pages of this Issue |
Pages:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53 ,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63 ,
64,
65 ,
66 ,
67 ,
68 ,
69 ,
70 ,
71 ,
72 ,
73 ,
74 ,
75 ,
76 ,
77 ,
78 ,
79 ,
80 ,
81 ,
82 , Download PDF |
|
|
|
|
|
|
|
|