Java Reference
In-Depth Information
Prototype
The Address class in this example uses the Prototype pattern to create an address based on an existing entry. The
core functionality for the pattern is defined in the interface Copyable .
Example A.26 Copyable.java
1. public interface Copyable{
2. public Object copy();
3. }
The Copyable interface defines a copy method and guarantees that any classes that implement the interface will
define a copy operation. This example produces a shallow copy—that is, it copies the object references from the
original address to the duplicate.
The code also demonstrates an important feature of the copy operation: not all fields must necessarily be
duplicated. In this case, the address type is not copied to the new object. A user would manually specify a new
address type from the PIM user interface.
Example A.27 Address.java
1. public class Address implements Copyable{
2. private String type;
3. private String street;
4. private String city;
5. private String state;
6. private String zipCode;
7. public static final String EOL_STRING =
8. System.getProperty("line.separator");
9. public static final String COMMA = ",";
10. public static final String HOME = "home";
11. public static final String WORK = "work";
12.
13. public Address(String initType, String initStreet,
14. String initCity, String initState, String initZip){
15. type = initType;
16. street = initStreet;
17. city = initCity;
18. state = initState;
19. zipCode = initZip;
20. }
21.
22. public Address(String initStreet, String initCity,
23. String initState, String initZip){
24. this(WORK, initStreet, initCity, initState, initZip);
25. }
26. public Address(String initType){
27. type = initType;
28. }
29. public Address(){ }
30.
31. public String getType(){ return type; }
32. public String getStreet(){ return street; }
33. public String getCity(){ return city; }
34. public String getState(){ return state; }
35. public String getZipCode(){ return zipCode; }
36.
37. public void setType(String newType){ type = newType; }
38. public void setStreet(String newStreet){ street = newStreet; }
39. public void setCity(String newCity){ city = newCity; }
40. public void setState(String newState){ state = newState; }
41. public void setZipCode(String newZip){ zipCode = newZip; }
42.
43. public Object copy(){
44. return new Address(street, city, state, zipCode);
45. }
46.
47. public String toString(){
48. return "\t" + street + COMMA + " " + EOL_STRING +
49. "\t" + city + COMMA + " " + state + " " + zipCode;
50. }
51. }
 
Search WWH ::




Custom Search