物件的轉殖 原型模式(二)

2021-10-02 14:33:59 字數 2196 閱讀 6063

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份出來,群毆之 在初始化資訊不發生變化的情況下,轉殖是最好的辦法。既隱藏了物件建立的細節,又對效能大大的提高 不用重新初始化物件,而是動態地獲得物件執行時的狀態。摘自 大話設計模式 提到原型模式,就不得不提深淺轉殖。兩者都是完成對原型的複製,而...