日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[翻译]生成器模式

發布時間:2023/12/31 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [翻译]生成器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

意圖

  • 將復雜對象的實例創建過程與表現形式分離,這樣同一個創建過程可以創建不同的表現形式;
  • 將復雜的表現形式進行分解,這樣同一個對象展現過程可以創建不同的表現形式。

問題

? ? 應用程序中如果需要創建復雜集合體的各個元素,應把復雜集合體的內容放在程序內部,而將展示復雜集合體的代碼放在程序的窗口級別。

討論

? ? 將解析對象實例的持久化內容(比如RTF文件)的算法與創建和表示對象實例(比如ASCII、TeX、文本組件)的算法分離。本模式的側重點是創建復雜的聚合體對象。

? ? 當需要解析外部格式時,調用者調用生成器服務,每次生成器服務被調用,生成器服務都會創建復雜對象實例的一部分,并且在生成器內部保持對象實例的狀態,直到復雜對象實例創建完畢。調用結束后,客戶端可以從生成器服務中獲取完整的對象實例。

? ? 生成器模式對對象實例創建過程有較好的控制。其它創建型模式一次就可以將對象實例創建成功,而生成器模式可以在調用者的控制下一步一步的創建對象實例。

結構?

??? 如下圖所示,Reader類封裝了解析公共輸入內容的過程。而生成器層(Converter類)根據需要將輸入內容轉換為不同的表示形式或者對象實例。

?

示例

? ? 生成器模式將復雜對象的創建過程與表現形式分離,這樣同一個創建過程可以創建不同的表現形式。該模式可用于在快餐店制作兒童套餐。兒童套餐通常包括主食、零食、飲料和玩具,例如一個漢堡包、炸薯條、一杯可樂和玩具恐龍。需要注意的是,雖然兒童套餐可以有很多種組合,比如顧客點的主食可以是漢堡包、三明治或者炸雞,但是制作兒童套餐的過程是相同的。快餐店員工負責將主食、零食和玩具打包在一起,飲料則另外裝在單獨的杯子中。其它的快餐店也是采用的相同的制作過程。

?

?

核對列表

1、確認要解決的問題是否存在公共的輸入,并且根據輸入內容生成不同的表現形式或者輸出;

2、在類Reader中封裝對公共輸入內容的解析操作;

3、為所有可能的表示形式設計一個公共的創建方案,在生成器接口中獲取這個方案的所有步驟;

4、為每一種表示形式定義一個生成器子類,繼承生成器接口;

5、客戶端創建一個Reader類實例和一個生成器實例,并在Read類實例中保存生成器實例引用;

6、客戶端調用Reader類實例創建表現形式;

7、客戶端調用生成器實例獲取創建成功的表現形式。

經驗

1)有時創建型模式互為補充:生成器模式可以使用其它創建型模式實現對象實例的一步步創建。實現抽象工廠模式、生成器模式和原型模式時可以采用單件模式;

2)生成器模式側重于逐步生成復雜的對象實例,而抽象工廠模式注重創建一組對象實例(不論是簡單對象還是復雜對象)。生成器模式視返回對象實例為對象實例創建過程的最后一步,而抽象工廠模式會立即返回創建的對象實例。

3)生成器模式創建的對象實例通常為復雜對象(混合物);

4)軟件設計之初,常采用工廠模式(該模式實現簡單,定制性強,可通過創建新子類以生成新對象)。隨著設計的深入,設計人員認為程序應該設計的更加靈活時,就會采用抽象工廠模式、原型模式或者生成器模式(這些模式更靈活,代碼實現也更復雜)。

?

原文地址:http://sourcemaking.com/design_patterns/builder

下面的鏈接是我寫的一個實例程序:

http://pan.baidu.com/s/1dDpJwjR

總結

以上是生活随笔為你收集整理的[翻译]生成器模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。