读书人

prototype-原形

发布时间: 2012-10-17 10:25:47 作者: rapoo

prototype--原型

import java.util.Hashtable;interface Product extends Cloneable{public abstract void use(String id);public abstract Product createClone();}class Manager{private Hashtable showcase=new Hashtable();public void register(String name,Product product){showcase.put(name, product);}public Product create(String protoname){Product p=(Product) showcase.get(protoname);return p.createClone();}}class MessageBox implements Product{private char decochar;public MessageBox(char decochar){this.decochar=decochar;}public void use(String s){int length=s.getBytes().length;for(int i=0;i<length+4;i++){System.out.print(decochar);}System.out.println("");System.out.println(decochar+" "+s+" "+decochar);for(int i=0;i<length+4;i++){System.out.print(decochar);}System.out.println("");}public Product createClone(){Product p=null;try{p=(Product)clone();}catch (Exception e) {e.printStackTrace();}return p;}}class UnderlinePen implements Product{private char ulchar;public UnderlinePen(char ulchar){this.ulchar=ulchar;}public void use(String s) {// TODO Auto-generated method stubint length=s.getBytes().length;System.out.println("\""+s+"\"");System.out.println(" ");for(int i=0;i<length;i++){System.out.print(ulchar);}System.out.println("");}public Product createClone() {// TODO Auto-generated method stubProduct p=null;try{p=(Product) clone();}catch(Exception e){e.printStackTrace();}return p;}}public class PrototypeCase {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubManager manager=new Manager();UnderlinePen upen=new UnderlinePen('~');MessageBox mbox=new MessageBox('*');MessageBox sbox=new MessageBox('/');manager.register("p1", upen);manager.register("p2", mbox);manager.register("p3", sbox);Product p=manager.create("p1");p.use("hello");p=manager.create("p2");p.use("hello s");p=manager.create("p3");p.use("hello");}}

?

读书人网 >软件架构设计

热点推荐