//[C] 2002 Sun Microsystems, Inc.---
public class RunAdapterPattern {
public static void main(String [] arguments){
System.out.println("Example for the Adapter pattern");
System.out.println();
System.out.println("This example will demonstrate the Adapter by using the");
System.out.println(" class ContactAdapter to translate from classes written");
System.out.println(" in a foreign language (Chovnatlh and ChovnatlhImpl),");
System.out.println(" enabling their code to satisfy the Contact interface.");
System.out.println();
System.out.println("Creating a new ContactAdapter. This will, by extension,");
System.out.println(" create an instance of ChovnatlhImpl which will provide");
System.out.println(" the underlying Contact implementation.");
Contact contact = new ContactAdapter();
System.out.println();
System.out.println("ContactAdapter created. Setting contact data.");
contact.setFirstName("Thomas");
contact.setLastName("Williamson");
contact.setTitle("Science Officer");
contact.setOrganization("W3C");
System.out.println();
System.out.println("ContactAdapter data has been set. Printing out Contact data.");
System.out.println();
System.out.println(contact.toString());
}
}
interface Contact{
public String getFirstName();
public String getLastName();
public String getTitle();
public String getOrganization();
public void setContact(Chovnatlh newContact);
public void setFirstName(String newFirstName);
public void setLastName(String newLastName);
public void setTitle(String newTitle);
public void setOrganization(String newOrganization);
}
class ContactAdapter implements Contact{
private Chovnatlh contact;
public ContactAdapter(){
contact = new ChovnatlhImpl();
}
public ContactAdapter(Chovnatlh newContact){
contact = newContact;
}
public String getFirstName(){
return contact.tlhapWa$DIchPong();
}
public String getLastName(){
return contact.tlhapQavPong();
}
public String getTitle(){
return contact.tlhapPatlh();
}
public String getOrganization(){
return contact.tlhapGhom();
}
public void setContact(Chovnatlh newContact){
contact = newContact;
}
public void setFirstName(String newFirstName){
contact.cherWa$DIchPong(newFirstName);
}
public void setLastName(String newLastName){
contact.cherQavPong(newLastName);
}
public void setTitle(String newTitle){
contact.cherPatlh(newTitle);
}
public void setOrganization(String newOrganization){
contact.cherGhom(newOrganization);
}
public String toString(){
return contact.toString();
}
}
interface Chovnatlh {
public String tlhapWa$DIchPong();
public String tlhapQavPong();
public String tlhapPatlh();
public String tlhapGhom();
public void cherWa$DIchPong(String chu$wa$DIchPong);
public void cherQavPong(String chu$QavPong);
public void cherPatlh(String chu$patlh);
public void cherGhom(String chu$ghom);
}
//pong = name
//wa'DIch = first
//Qav = last
//patlh = rank (title)
//ghom = group (organization)
//tlhap = take (get)
//cher = set up (set)
//chu' = new
//chovnatlh = specimen (contact)
class ChovnatlhImpl implements Chovnatlh {
private String wa$DIchPong;
private String QavPong;
private String patlh;
private String ghom;
public ChovnatlhImpl() {
}
public ChovnatlhImpl(String chu$wa$DIchPong, String chu$QavPong,
String chu$patlh, String chu$ghom) {
wa$DIchPong = chu$wa$DIchPong;
QavPong = chu$QavPong;
patlh = chu$patlh;
ghom = chu$ghom;
}
public String tlhapWa$DIchPong() {
return wa$DIchPong;
}
public String tlhapQavPong() {
return QavPong;
}
public String tlhapPatlh() {
return patlh;
}
public String tlhapGhom() {
return ghom;
}
public void cherWa$DIchPong(String chu$wa$DIchPong) {
wa$DIchPong = chu$wa$DIchPong;
}
public void cherQavPong(String chu$QavPong) {
QavPong = chu$QavPong;
}
public void cherPatlh(String chu$patlh) {
patlh = chu$patlh;
}
public void cherGhom(String chu$ghom) {
ghom = chu$ghom;
}
public String toString() {
return wa$DIchPong + " " + QavPong + ": " + patlh + ", " + ghom;
}
}