阿蜜果
不驕,不矜,勤工,好學,才是好女子
你所浪費的今天,是昨天死去的人奢望的明天。
你所厭惡的現在,是未來的你回不去的曾經。
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)
主站蜘蛛池模板:
伊人久久亚洲综合影院首页
|
亚洲精品成人久久
|
亚洲av综合av一区二区三区
|
亚洲国产精品成人网址天堂
|
亚洲人成无码网站在线观看
|
在线免费视频一区二区
|
欧美激情综合亚洲一二区
|
日日操夜夜操免费视频
|
免费看一级一级人妻片
|
久久精品国产精品亚洲人人
|
亚洲高清视频在线观看
|
久久久久久影院久久久久免费精品国产小说
|
亚洲高清国产拍精品熟女
|
成人免费a级毛片
|
亚洲狠狠婷婷综合久久蜜芽
|
色吊丝最新永久免费观看网站
|
精选影视免费在线
|
亚洲第一AV网站
|
久久久久亚洲AV无码去区首
|
国产成人一区二区三区免费视频
|
青青青亚洲精品国产
|
亚洲日韩欧洲乱码AV夜夜摸
|
91香蕉国产线观看免费全集
|
亚洲成人激情小说
|
亚洲阿v天堂在线2017免费
|
99精品全国免费观看视频..
|
亚洲综合无码一区二区三区
|
色妞WWW精品免费视频
|
黄色网址大全免费
|
久久99国产亚洲精品观看
|
在线观看日本免费a∨视频
|
男女啪啪免费体验区
|
亚洲国产精品久久久久久
|
在线精品免费视频无码的
|
国产一级a毛一级a看免费人娇
|
久久亚洲日韩看片无码
|
国产一卡二卡≡卡四卡免费乱码
|
两个人www免费高清视频
|
va天堂va亚洲va影视中文字幕
|
亚洲Av无码乱码在线观看性色
|
中国xxxxx高清免费看视频
|