五、singleton唯一的对象实例
public class Singleton {
private static Singleton singleton=new Singleton();
private Singleton() {
System.out.println("产生对象实例");
}
public static Singleton getInstance(){
return singleton;
}
}
六、prototype原型、复制建立对象实例
public interface Product extends Cloneable{
void use(String s);
Product createClone();
}
public class Manager {
private Hashtable products= new Hashtable();
public void register(String name,Product product){
products.put(name,product);
}
public Product create(String protoname){
Product product = (Product) products.get(protoname);
return product.createClone();
}
}
public class MessageBox implements Product {
private char messageBoxChar;
public MessageBox(char messageBoxChar) {
this.messageBoxChar = messageBoxChar;
}
@Override
public void use(String s) {
System.out.println(messageBoxChar+""+s+""+messageBoxChar);
}
@Override
public Product createClone() {
Product product=null;
try {
product = (Product) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return product;
}
}
public class UnderLinePen implements Product {
private char charPen;
public UnderLinePen(char charPen) {
this.charPen = charPen;
}
@Override
public void use(String s) {
int length = s.getBytes().length;
System.out.println("*"+s+"*");
for (int i = 0; i < length+2; i++) {
System.out.print(charPen);
}
System.out.println();
}
@Override
public Product createClone() {
Product product=null;
try {
product=(Product) clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return product;
}
}
public class Test {
public static void main(String[] args) {
Manager manager = new Manager();
MessageBox messageBox = new MessageBox('$');
UnderLinePen underLinePen = new UnderLinePen('@');
manager.register("messageBox",messageBox);
manager.register("underLinePen",underLinePen);
Product underLinePenProduct = manager.create("underLinePen");
Product messageBoxProduct = manager.create("messageBox");
underLinePenProduct.use("joanna");
System.out.println("underLinePen输出完成");
messageBoxProduct.use("zhouzhou");
}
}