用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且都過(guò)拷貝這些原型建建新的對(duì)象。
prototype模式充許一個(gè)對(duì)象再創(chuàng)建另一個(gè)可定制的對(duì)象,根本無(wú)需知道創(chuàng)建的細(xì)節(jié)。
java中提供了clone()來(lái)實(shí)現(xiàn)對(duì)象克隆。所以prototype模式變得了很簡(jiǎn)單。請(qǐng)參考以下例程:
package com.pdw.pattern;
abstract class AbsHello implements Cloneable{
?
?String username;
?public String getUsername() {
??return username;
?}
?public void setUsername(String username) {
??this.username = username;
?}
?
?public abstract void sayHello();
?
?public Object clone(){
??Object object=null;
??try{
???object=super.clone();
???
??}catch(Exception e){
???System.err.println(e);
??}
??return object;
?}
}
class OneHello extends AbsHello{
?public OneHello(){
??setUsername("peidw");
?}
?@Override
?public void sayHello() {
??// TODO Auto-generated method stub
??System.out.println("OneHello-->SayHello to "+username);
?}
?
}
class TwoHello extends AbsHello{
?public TwoHello(){
??setUsername("pxm");
?}
?@Override
?public void sayHello() {
??// TODO Auto-generated method stub
??System.out.println("TwoHello-->sayHello to "+username);
?}
?
}
public class Prototype {
?/**
? * @param args
? */
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??AbsHello oneh=new OneHello();
??AbsHello twoh=new TwoHello();
??oneh.sayHello();
??twoh.sayHello();
?}
}