Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Complex {
- int[] nums = {1,2,3,4,5};
- public Complex clone() {
- return new Complex();//this line create a new object, so is it violate the objective of prototype ?//
- }
- }
- class Test2 {
- Complex c1 = new Complex();
- Complex makeCopy() {
- return (Complex)c1.clone();// Is it actually create a new object ? based on the clone method in Complex class? //
- }
- public static void main(String[] args) {
- Test2 tp = new Test2();
- Complex c2 = tp.makeCopy();
- }
- }
- public Complex clone(){
- Complex clone = (Complex)super.clone();
- clone.nums = this.nums;
- return clone;
- }
- import java.awt.Dimension;
- import java.io.Serializable;
- /**
- * This class also acts as a factory for creating prototypical objects.
- */
- public class PageBanner implements Serializable, Cloneable {
- private String slogan;
- private String image;
- private String font;
- private Dimension dimension;
- // have prototype banner from which to derive all other banners
- private static final PageBanner PROTOTYPE = new PageBanner("",
- "blank.png", "Verdana", new Dimension(600, 45));
- PageBanner(String slogan, String image, String font,
- Dimension dim) {
- this.slogan = slogan;
- this.image = image;
- //... other assignments
- }
- // getters and setters..
- public String toString() {
- return new StringBuilder("PageBanner[")
- .append("Slogan=").append(slogan)
- .append("Image=").append(image)
- .append("Font=").append(font)
- .append("Dimensions=").append(dimension)
- .toString();
- }
- protected Object clone() {
- Object cln = null;
- try {
- cln = super.clone();
- }catch(CloneNotSupportedException e) {
- // ignore, will never happen
- }
- return cln;
- }
- /**
- * This is the creational method that uses the prototype banner
- * to create banners and changes it slightly (setting slogan and image)
- */
- public static PageBanner createSloganBanner(String slogan, String image) {
- PageBanner banner = (PageBanner) PROTOTYPE.clone();
- banner.slogan = slogan;
- banner.image = image;
- return banner;
- }
- /**
- * Another creational method that uses the prototype banner
- * to create banners and changes it slightly (setting image)
- */
- public static PageBanner createImageBanner(String image) {
- PageBanner banner = (PageBanner) PROTOTYPE.clone();
- banner.image = image;
- return banner;
- }
- // similarly you can have a number of creational methods with
- // different parameters for different types of banners that
- // vary slightly in their properties.
- // main... (for illustration)
- public static void main(String[] args) {
- // both these banners are created from same prototypical instance
- PageBanner slogan = PageBanner.createSloganBanner(
- "Stackoverflow Rocks", "stack.png");
- PageBanner img = PageBanner.createImageBanner("stackBanner.png");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement