public abstract void play(Note n);
public String what(){
return "Instrument";
}
public abstract void adjust();
}
class Wind extends Instrument{
public void play(Note n){
System.out.println("Wind.play"+n);
}
public void adjust(){}
public String what(){
return "Wind";
}
}
class Percussion extends Instrument{
public void play(Note n) {
System.out.println("Percussion.play"+n);
}
public void adjust() {}
public String what(){
return "Percussion";
}
}
class Stringed extends Instrument{
@Override
public void play(Note n) {
System.out.println("Stringed.play"+n);
}
@Override
public void adjust() {}
public String what(){
return "Stringed";
}
}
class Brass extends Wind{
public void play(Note n){
System.out.println("Brass.play"+n);
}
public void adjust(){
System.out.println("Brass.adjust");
}
}
class Woodwind extends Wind{
public void play(Note n){
System.out.println("Woodwind.play"+n);
}
public String what(){
return "Woodwind";
}
}
public class Music4 {
static void tune(Instrument i){
i.play(Note.MIDDLE_C);
}
static void tuneAll(Instrument [] e){
for(Instrument i:e){
tune(i);
}
}
public static void main(String[] args) {
Instrument [] orchestra={
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchestra);
Percussion.playMIDDLE_C
Stringed.playMIDDLE_C
Brass.playMIDDLE_C
void play(Note n);
void adjust();
}
class Wind implements Instrument{
public void play(Note n){
System.out.println(this+".play()"+n);
}
@Override
public void adjust() {
System.out.println(this+".adjust()");
}
public String toString(){
return "Wind";
}
}
class Percussion implements Instrument{
@Override
public void play(Note n) {
System.out.println(this+".play()"+n);
}
@Override
public void adjust() {
System.out.println(this+".adjust()");
}
public String toString(){
return "Percussion";
}
}
class Stringed implements Instrument{
@Override
public void play(Note n) {
System.out.println(this+".play()"+n);
}
@Override
public void adjust() {
System.out.println(this+".adjust()");
}
public String toString(){
return "Stringed";
}
}
class Brass extends Wind{
public String toString(){
return "Brass";
}
}
class Woodwind extends Wind{
public String toString(){
return "Woodwind";
}
}
public class Music5 {
static void tune(Instrument i){
i.play(Note.MIDDLE_C);
}
static void tuneAll(Instrument [] e){
for(Instrument i:e){
tune(i);
}
}
public static void main(String[] args) {
Instrument [] orchaestra={
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchaestra);
}
Percussion.play()MIDDLE_C
Stringed.play()MIDDLE_C
Brass.play()MIDDLE_C
return getClass().getSimpleName();
}
Object process(Object input){
return input;
}
}
class Upcase extends Processor{
String process(Object input){
return ((String) input).toUpperCase();
}
}
class Downcase extends Processor{
String process(Object input){
return ((String) input).toLowerCase();
}
}
class Splitter extends Processor{
String process(Object input){
return Arrays.toString(((String) input).split(" "));
}
}
public class Apply {
public static void process(Processor p,Object s){
System.out.println("Using Process "+p.name());
System.out.println(p.process(s));
}
public static String s="Disagereement with beliefs is by definition incorrect";
public static void main(String[] args) {
process(new Upcase(),s);
process(new Downcase(),s);
process(new Splitter(),s);
}
Using Process Downcase
disagereement with beliefs is by definition incorrect
Using Process Splitter
private final long id=counter++;
public String toString(){
return "Waveform"+id;
}
public String name(){
return getClass().getSimpleName();
}
double cutoff;
public LowPass(double cutoff){
this.cutoff=cutoff;
}
public Waveform process(Waveform input){
return input;
}
double cutoff;
public HighPass(double cutoff){
this.cutoff=cutoff;
}
public Waveform process(Waveform input){
return input;
}
double lowCutoff,highCutoff;
public BandPass(double lowCut,double highCut){
lowCutoff=lowCut;
highCutoff=highCut;
}
public Waveform process(Waveform input){
return input;
}
Object process(Object input);
System.out.println("Using Process "+p.name());
System.out.println(p.process(s));
public String name(){
return getClass().getSimpleName();
}
public abstract String process(Object input);
public static String s="If she weighs the same as a duck ,she's made of wood";
public static void main(String[] args) {
Apply.process(new Upcase(), s);
Apply.process(new Downcase(), s);
Apply.process(new Splitter(), s);
}
}
class Upcase extends StringProcessor{
public String process(Object input){
return ((String) input).toUpperCase();
}
}
class Downcase extends StringProcessor{
public String process(Object input){
return ((String) input).toLowerCase();
}
}
class Splitter extends StringProcessor{
public String process(Object input){
return Arrays.toString(((String) input).split(" "));
}
IF SHE WEIGHS THE SAME AS A DUCK ,SHE'S MADE OF WOOD
Using Process Downcase
if she weighs the same as a duck ,she's made of wood
Using Process Splitter
public FilterAdapter(Filter filter){
this.filter=filter;
}
@Override
public String name() {
return filter.name();
}
@Override
public Waveform process(Object input) {
return filter.process((Waveform)input);
}
}
public class FilterProcessor{
public static void main(String[] args) {
Waveform w = new Waveform();
Apply.process(new FilterAdapter(new LowPass(1.0)), w);
Apply.process(new FilterAdapter(new HighPass(2.0)), w);
Apply.process(new FilterAdapter(new BandPass(3.0,4.0)), w);
}
Using Process HighPass
Waveform0
Using Process BandPass
3万+



被折叠的 条评论
为什么被折叠?



