© 1999-2003, Flemming Koch Jensen
Alle rettigheder forbeholdt
Handle Pattern
Vejledende løsninger

 

 

1 Først laver vi Language interfacet:
interface Language {

  public void hello();
  public void error();
  public void bye();
}

Dernæst laver vi Message klassen:.

class Message {
  private Language lang;
  
  public Message( Language lang ) {
    setLang( lang );
  }
  
  public void setLang( Language lang ) {
    this.lang = lang;
  }
  
  public void hello() {
    lang.hello();
  }
  
  public void error() {
    lang.error();
  }
  
  public void bye() {
    lang.bye();
  }
}
  De tre Language klasser er meget ens. Vi vil derfor kun vise en af dem her:
class English implements Language {
  
  public void hello() {
    System.out.println( "Hello" );
  }
  
  public void error() {
    System.out.println( "Error" );
  }
  
  public void bye() {
    System.out.println( "Bye" );
  }
}
  Endelig har vi, som altid, en testanvendelse:
class TestLanguage {
  
  public static void main( String argv[] ) {
    Language dansk   = new Danish();
    Language engelsk = new English();
    Language tysk    = new German();
    
    Message msg = new Message( dansk );
    
    talk( msg );
    
    msg.setLang( tysk );
    
    talk( msg );
  
    msg.setLang( engelsk );
  
    talk( msg );
  }
  
  private static void talk( Message msg ) {
    msg.hello();
    msg.error();
    msg.bye();
  }
}

Goddag
Fejl
Farvel
Guten tag
Fehler
Auf wiedersehen
Hello
Error
Bye

Kildetekster:

Language.java
Message.java
Danish.java
English.java
German.java
TestLanguage.java