阿蜜果
不驕,不矜,勤工,好學,才是好女子
你所浪費的今天,是昨天死去的人奢望的明天。
你所厭惡的現在,是未來的你回不去的曾經。
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 297, comments - 1618, trackbacks - 0
設計模式學習筆記--建造模式(Builder)
????
建造(Builder)模式
屬于對象的
創建模式
。
1. 定義
????? 建造模式將一個產品的內部表象與產品生成過程分割出來,從而可以使一個建造過程生成具有不同的內部表象的產品對象。
?
2. 使用的原因
???? 是為了將構建復雜對象的過程和它的部件解耦。
?3.?適用的情況
????? 建造模式利用一個導演者對象和具體建造者對象一個一個地建造出所有的零件,從而建造出完整的產品對象。建造者模式將產品的結構和產品的零件建造過程對客戶端隱藏起來,把對建造過程進行指揮的責任和具體建造零件和責任分割開來,達到責任劃分和封裝的目的。
4. 類圖結構及其說明
???? 1)
建造模式的類圖如下所示:
??????
????? 2)各類的說明如下:
?????????
i)抽象建造者(Builder)角色
:給出一個抽象接口,以規范產品對象的各個組成成分的構造;
????????
ii)具體建造者(ConcretBuilder)角色
:它在應用程序的調用下創建產品的實例。完成任務為;
????????????? a)? 實現抽象建造者Builder接口,給出一步步完成創建產品實例的操作;
????????????? b)? 在創建完成后,提供產品的實例。
?????????
iii) 導演者(Director角色):
調用具體建造者角色以創建產品對象;
????????
iv)產品(Product)角色
:建造中的復雜對象。一般情況下,一個系統不止一個產品類。
5. 應用舉例
????????以下實例建造一所Amigo想要的一所房子,呵呵,初中時的夢想:)
??????? 一所小小的竹子做成的房子,滿屋掛滿風鈴,有一個茶幾,坐落在山上。
?????1) 需求分析
????????Amigo的這所房子的建造跟我們討論的建造模式很是相關哦,竹子、風鈴、茶幾相當于我們所說的“零件”??,最后建造成的房子相當于Amigo夢寐以求的竹房。呵呵,我們開始建造吧,完成Amigo的夢想!
???????? i)我們首先建立一個接口Builder,它定義如何創建我想要的房子的各個組成部分:
????????????
public
?
interface
?Builder?
{
??
//
創建想要的竹子
??
void
?buildBamboo();
??
//
創建風鈴
??
void
?buildWindbell();
??
??
//
創建茶幾
??
void
?buildTeapoy();
?
??
//
返回最后建造好的房子
??
//
房子的組裝過程不在這里進行,而是轉移到Director中進行,從而實現了解耦過程和部件
??House?getHouse();
}
??????? ii)Director類將竹子、風鈴、茶幾最后組裝成我的full house
????
public
?
class
?Director?
{
????
private
?Builder?builder;
????
????
public
?Director(Builder?builder)?
{
????
this
.builder?
=
?builder;
????}
?
????
/**?*/
/**
??????*?該方法組裝我的full?house
??????
*/
????
public
?
void
?construct()?
{
????builder.buildBamboo();
????????builder.buildWindbell();??
????????builder.buildTeapoy();??
????}
}
????? iii)具體建造器,茶幾等怎么建造成的?我這樣的懶人是不會知道的了,到時候請人吧。
?
public
?
class
?ConcreteBuilder?
implements
?Builder?
{
???
public
?
void
?buildBamboo()?
{
???????
//
讓別人去做吧,我去數工錢了
????}
????
public
?
void
?buildWindbell()?
{
???????
//
同上
?????}
????
public
?
void
?buildTeapoy()?
{
???????
//
同上
?????}
?????
public
?House?getHouse()?
{
?????}
}
??????
?????? iv)House類
????????????
public
?
class
?House?
{
}
?????? v) 下面來看看如何使用Builder模式來創建我的竹房,呵呵。
??????????
ConcreteBuilder?builder?
=
?
new
?ConcreteBuilder();
Director?director?
=
?
new
?Director(builder);
director.construct();
House?house?
=
?builder.getHouse();
???????:),建得差不多吧,還差點什么呢,以后慢慢想咯。
參考書籍:《Java與模式》
??????????????????? 《Patterns in Java》
?
posted on 2007-03-18 23:27
阿蜜果
閱讀(4596)
評論(9)
編輯
收藏
所屬分類:
Design Pattern
FeedBack:
#
re: 設計模式學習筆記--建造模式(Builder)
2007-03-19 09:10 |
Tortoise
支持!你好用功呀!~
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder)
2007-03-19 11:54 |
Tortoise
好經典呀。就是不知道干嗎要這樣設計
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder)
2007-03-20 10:46 |
zhyiwww
講的簡單易懂。基本上明白了,還需要人深入的學習和實踐。
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder) [未登錄]
2007-03-20 13:21 |
阿蜜果
呵呵,努力學習設計模式中,up下篇,template模式
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder)
2008-01-08 12:29 |
hbyufan@hotmail.com
一所小小的竹子做成的房子,滿屋掛滿風鈴,有一個茶幾,坐落在山上。
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder) [未登錄]
2009-02-10 14:28 |
bean
ConcreteBuilder builder = new ConcreteBuilder();
最好用接口聲明
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder)
2009-12-21 15:44 |
xiaoyang818
ConcreteBuilder builder = new ConcreteBuilder();
最好改成
Builder builder = new ConcreteBuilder();
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder)
2011-03-17 11:20 |
fxbird
都是些人云亦云的家伙,請問博主,你能說出建造模式和構造函數有什么區別嗎?建造的時候難道不需要參數嗎,哪有不需要參數就能構造出的東西。
回復
更多評論
#
re: 設計模式學習筆記--建造模式(Builder) [未登錄]
2012-09-24 12:06 |
C
@xiaoyang818
+1
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
蜜果私塾:在JavaScript中使用適配器模式
蜜果私塾:在JavaScript中使用工廠模式
蜜果私塾:在JavaScript中使用單例模式
設計模式學習筆記--觀察者模式(Observer) (未完待續)
設計模式學習筆記--調停者模式(Mediator)
設計模式學習筆記--備忘錄模式(Memento)
設計模式學習筆記--策略模式(待續)
設計模式學習筆記--模板方法(Template Method)模式
設計模式學習筆記--建造模式(Builder)
設計模式學習筆記--原型(Prototype)
Copyright ©2025 阿蜜果 Powered by:
博客園
模板提供:
滬江博客
<
2007年3月
>
日
一
二
三
四
五
六
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
我的作品:
玩轉Axure RP
(2015年12月出版)
Power Designer系統分析與建模實戰
(2015年7月出版)
Struts2+Hibernate3+Spring2
(2010年5月出版)
留言簿
(263)
給我留言
查看公開留言
查看私人留言
隨筆分類
Ajax(3)
Ant(1)
Auto Code(4)
Cewolf
CMMI(1)
CSS(2)
CVS(1)
database(15)
Design Pattern(11)
Eclipse BIRT(1)
EJB
extremecomponents(1)
GIS(2)
Hibernate(8)
iBATIS(2)
IDE(1)
Inno Setup(2)
IT評論(2)
Java(36)
Javascript(32)
JBoss(1)
JFreeChart(3)
JFreeReport(3)
JSF
Linux(3)
MySql(11)
Open Source(4)
Oracle(5)
Other(13)
Spring(12)
Sql Server(1)
Struts(7)
Struts2(8)
Tomcat
UML
Web(8)
Web Service(3)
Workflow
產品原型設計(8)
似水流年(13)
協議(12)
原創小說(1)
技術評論
架構師之路(12)
電信知識(3)
網絡通信相關(11)
職場感悟(6)
解決方案(12)
項目管理(8)
隨筆檔案
2016年3月 (2)
2015年11月 (1)
2015年9月 (1)
2015年6月 (3)
2015年5月 (4)
2014年12月 (2)
2014年7月 (1)
2014年6月 (1)
2014年5月 (2)
2014年1月 (2)
2013年10月 (1)
2013年8月 (1)
2013年7月 (1)
2013年4月 (1)
2013年2月 (1)
2012年11月 (2)
2012年10月 (1)
2012年1月 (1)
2011年11月 (8)
2011年10月 (4)
2011年9月 (1)
2011年8月 (2)
2011年7月 (5)
2011年2月 (2)
2011年1月 (1)
2010年12月 (3)
2010年11月 (9)
2010年9月 (1)
2010年7月 (2)
2010年6月 (2)
2010年5月 (5)
2010年4月 (2)
2009年12月 (4)
2009年11月 (2)
2009年10月 (1)
2009年9月 (3)
2009年8月 (5)
2009年7月 (5)
2009年5月 (1)
2008年10月 (3)
2008年9月 (3)
2008年8月 (1)
2008年6月 (2)
2008年5月 (3)
2008年4月 (2)
2008年2月 (2)
2008年1月 (11)
2007年12月 (9)
2007年11月 (7)
2007年10月 (9)
2007年9月 (12)
2007年8月 (24)
2007年7月 (10)
2007年6月 (2)
2007年5月 (3)
2007年4月 (18)
2007年3月 (24)
2007年2月 (24)
文章分類
喜愛歌詞(12)
生活點滴(3)
芝麻粒知識(8)
英語(1)
相冊
java學習相關
other
產品經理相關
圖書相關
工具相關
日歷
架構師相關
設計模式相關
貼圖
走走拍拍
飯團
關注blog
BeanSoft
JAVA-HE
kenzhang
即興的靈感
壞男孩
孫衛琴
施偉
螞蟻
銀河使者
鼠標
積分與排名
積分 - 2294312
排名 - 3
最新評論
1.?re: 新書推薦:《Power Designer系統分析與建模實戰》
你好。買了書,麻煩把書中的樣例工程文件發給我。非常感謝。
我的郵箱:wen027andy@163.com
--文良
2.?re: 新書推薦:《Power Designer系統分析與建模實戰》
@智祿
謝謝指出,下次改版修正:)
--阿蜜果
3.?re: 新書推薦:《Power Designer系統分析與建模實戰》
6.1.3 9.存儲函數
存儲函數與存儲函數類似,……
此處應該是:存儲函數與存儲過程類似,……
我買的是多看上的電子版,請修改
--智祿
4.?re: 新書推薦:《Power Designer系統分析與建模實戰》
您好,今天買了您的這本書,為了更好的學習,麻煩將書中的樣例工程文件發給我,萬分感謝,感謝作者寫出這么好的書,我特別需要,祝大賣~~
yaozhilu@foxmail.com
--智祿
5.?re: 新書推薦:《Power Designer系統分析與建模實戰》
您好,書不錯,已經買了,麻煩發套樣例工程吧,最好詳細點的,萬分感激!
jackylee365@163.com
--李成龍
閱讀排行榜
1.?常用加密算法的Java實現總結(二)——對稱加密算法DES、3DES和AES(143711)
2.?用Ant實現Java項目的自動構建和部署(123980)
3.?異常備忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file(114272)
4.?Java代碼規范、格式化和checkstyle檢查配置文檔(71822)
5.?常用加密算法的Java實現總結(一)——單向加密算法MD5和SHA(62382)
6.?通用權限管理系統設計篇(三)——概要設計說明書(61737)
7.?使用XFire+Spring構建Web Service(一)——helloWorld篇(53661)
8.?基于注解的Spring MVC+Hibernate簡單入門(52588)
9.?在阿里云Linux服務器上安裝MySQL(49641)
10.?關系型數據的分布式處理系統MyCAT(1)—概述和基本使用教程(47770)
評論排行榜
1.?使用XFire+Spring構建Web Service(二)(102)
2.?使用XFire+Spring構建Web Service(一)——helloWorld篇(70)
3.?通用權限管理系統設計篇(三)——概要設計說明書(64)
4.?異常備忘:java.lang.UnsupportedClassVersionError: Bad version number in .class file(54)
5.?通用權限管理設計篇(二)——數據庫設計(40)
主站蜘蛛池模板:
亚洲一级毛片视频
|
中文字幕亚洲情99在线
|
成人免费观看男女羞羞视频
|
成人黄18免费视频
|
亚洲中文无码mv
|
天天看免费高清影视
|
亚洲熟妇无码八V在线播放
|
在线播放免费播放av片
|
色欲aⅴ亚洲情无码AV蜜桃
|
国产jizzjizz免费看jizz
|
久久精品国产亚洲AV天海翼
|
五月婷婷亚洲综合
|
香蕉视频在线免费看
|
亚洲国产精品久久久久网站
|
无码人妻精品中文字幕免费
|
1000部拍拍拍18勿入免费凤凰福利
|
亚洲综合在线视频
|
久久这里只有精品国产免费10
|
天堂亚洲国产中文在线
|
国产jizzjizz视频全部免费
|
国产精品免费αv视频
|
久久丫精品国产亚洲av
|
亚洲第一成年免费网站
|
亚洲aⅴ天堂av天堂无码麻豆
|
www国产亚洲精品久久久日本
|
久久精品成人免费看
|
亚洲一区二区三区91
|
亚洲国产一区视频
|
最近中文字幕完整免费视频ww
|
成人亚洲国产va天堂
|
亚洲美女高清一区二区三区
|
又粗又硬又大又爽免费视频播放
|
国产成人无码精品久久久免费
|
久久精品国产亚洲AV香蕉
|
日本高清免费aaaaa大片视频
|
一本大道一卡二大卡三卡免费
|
久久综合亚洲色HEZYO社区
|
免费A级毛片无码A
|
真实国产乱子伦精品免费
|
国产偷国产偷亚洲高清人
|
亚洲制服中文字幕第一区
|