sunny公司開發人員決定使用原型模式來實現工作週報的快速建立,快速建立工作週報結構圖如圖7-3所示:
圖7-3 快速建立工作週報結構圖
在圖7-3中,weeklylog充當具體原型類,object類充當抽象原型類,clone()方法為原型方法。weeklylog類的**如下所示:
//工作週報weeklylog:具體原型類,考慮到**的可讀性和易理解性,只列出部分與模式相關的核心**
class weeklylog implements cloneable
private string name;
private string date;
private string content;
public void setname(string name)
catch(clonenotsupportedexception e)
}
編寫如下客戶端測試**:
class client
public static void main(string args)
weeklylog log_previous = new weeklylog(); //建立原型物件
log_previous.setname("張無忌");
log_previous.setdate("第12周");
log_previous.setcontent("這周工作很忙,每天加班!");
system.out.println("****週報****");
system.out.println("周次:" + log_previous.getdate());
system.out.println("姓名:" + log_previous.getname());
system.out.println("內容:" + log_previous.getcontent());
system.out.println("--------------------------------");
weeklylog log_new;
log_new = log_previous.clone(); //呼叫轉殖方法建立轉殖物件
log_new.setdate("第13周");
system.out.println("****週報****");
system.out.println("周次:" + log_new.getdate());
system.out.println("姓名:" + log_new.getname());
system.out.println("內容:" + log_new.getcontent());
編譯並執行程式,輸出結果如下:
****週報****
周次:第12周
姓名:張無忌
內容:這周工作很忙,每天加班!
****週報****
周次:第13周
姓名:張無忌
內容:這周工作很忙,每天加班!
通過已建立的工作週報可以快速建立新的週報,然後再根據需要修改週報,無須再從頭開始建立。原型模式為工作流系統中任務單的快速生成提供了一種解決方案。
思考
如果在client類的main()函式中增加如下幾條語句:
system.out.println(log_previous == log_new);
system.out.println(log_previous.getdate() == log_new.getdate());
system.out.println(log_previous.getname() == log_new.getname());
system.out.println(log_previous.getcontent() == log_new.getcontent());
**這些語句的輸出結果。
結果為false,false,true,true
原型模式(物件的轉殖)
原型模式 屬於物件的建立模式 通過給出乙個原型物件 來指明所有建立的物件的型別 然後用這個原型物件 提供的複製辦法 建立出更多同型別 的物件。聯想到瀏覽器中,如果我們生成了乙個button例項,這個button例項經過一系列操作,攜帶了各種資訊,比如button加顏色,加背景圖,加文字,加事件等等。...
原型模式(轉殖模式)
轉殖模式最突出的優點就是,不用建立新的物件,省時間,效率高。適合需要一下子新建很多類的情況 轉殖模式分為兩種,淺轉殖和深轉殖 實現 cloneable可以實現轉殖 淺轉殖就是不能轉殖物件屬性,兩者公用乙個物件屬性位址 字串比較特殊,是不可改變物件,所以可以不看做物件 public class she...
七 原型模式(深淺轉殖)
類似 影之分身術 的東西,以 鳴人 為原型,複製1000份出來,群毆之 在初始化資訊不發生變化的情況下,轉殖是最好的辦法。既隱藏了物件建立的細節,又對效能大大的提高 不用重新初始化物件,而是動態地獲得物件執行時的狀態。摘自 大話設計模式 提到原型模式,就不得不提深淺轉殖。兩者都是完成對原型的複製,而...