//[C] 2002 Sun Microsystems, Inc.---
public class RunPrototypePattern {
public static void main(String[] arguments) {
System.out.println("Example for Prototype pattern");
System.out.println();
System.out.println("This example will create an Address object,");
System.out.println(" which it will then duplicate by calling the");
System.out.println(" object's clone method.");
System.out.println();
System.out.println("Creating first address.");
Address address1 = new Address("8445 Silverado Trail", "Rutherford",
"CA", "91734");
System.out.println("First address created.");
System.out.println(" Hash code = " + address1.hashCode());
System.out.println(address1);
System.out.println();
System.out.println("Creating second address using the clone() method.");
Address address2 = (Address) address1.copy();
System.out.println("Second address created.");
System.out.println(" Hash code = " + address2.hashCode());
System.out.println(address2);
System.out.println();
}
}
interface Copyable {
public Object copy();
}
class Address implements Copyable {
private String type;
private String street;
private String city;
private String state;
private String zipCode;
public static final String EOL_STRING = System
.getProperty("line.separator");
public static final String COMMA = ",";
public static final String HOME = "home";
public static final String WORK = "work";
public Address(String initType, String initStreet, String initCity,
String initState, String initZip) {
type = initType;
street = initStreet;
city = initCity;
state = initState;
zipCode = initZip;
}
public Address(String initStreet, String initCity, String initState,
String initZip) {
this(WORK, initStreet, initCity, initState, initZip);
}
public Address(String initType) {
type = initType;
}
public Address() {
}
public String getType() {
return type;
}
public String getStreet() {
return street;
}
public String getCity() {
return city;
}
public String getState() {
return state;
}
public String getZipCode() {
return zipCode;
}
public void setType(String newType) {
type = newType;
}
public void setStreet(String newStreet) {
street = newStreet;
}
public void setCity(String newCity) {
city = newCity;
}
public void setState(String newState) {
state = newState;
}
public void setZipCode(String newZip) {
zipCode = newZip;
}
public Object copy() {
return new Address(street, city, state, zipCode);
}
public String toString() {
return "\t" + street + COMMA + " " + EOL_STRING + "\t" + city + COMMA
+ " " + state + " " + zipCode;
}
}
|