亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? builderpattern.htm

?? DesignPattern基于Java方面最好的書
?? HTM
字號:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


  
  
  <link rel="stylesheet" href="css/stdlayout.css" type="text/css">


  
  
  <link rel="stylesheet" href="css/print.css" type="text/css">


  
  
  <meta content="text/html; charset=gb2312" http-equiv="content-type">


  
  
  <title>Builder 模式</title>
</head>


<body>


<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>


<h1><a href="CppGossip.html">Design Pattern: Builder 模式</a></h1>


您想要建立一個迷宮產(chǎn)生程式,迷宮使用二維陣列來定義,0表示道路,1表示墻,2表示寶物,根據(jù)所定義的二維迷宮陣列,您想要程式自動產(chǎn)生各種不同材質(zhì)的迷宮,例如磚墻迷宮,鉆石迷宮等等。<br>
<br>
您可以在程式中定義兩個角色,一個是指導迷宮建立的Director角色,一個是按照指導者指示建立迷宮的Builder角色,Director根據(jù)定義的迷宮陣列來指導Builder,只要更換Builder,就可以完成不同材質(zhì)的迷宮。<br>
<br>
可以使用下面的UML 類別圖來表示上述的概念:<br>


<div style="text-align: center;"><img style="width: 530px; height: 515px;" alt="Builder" title="Builder" src="images/builder-1.jpg"><br>
</div>



實際上的程式設計如下:<br>

<ul>
  <li> MazeDirector.java </li>
</ul>

<pre>public class MazeDirector {<br>    private int[][] maze;<br>    private IMazeBuilder mazeBuilder;<br><br>    public void setMaze(int[][] maze) {<br>        this.maze = maze;<br>    }<br>    <br>    public void setMazeBuilder(IMazeBuilder mazeBuilder) {<br>        this.mazeBuilder = mazeBuilder;<br>    }<br>    <br>    public void buildMaze() {<br>        for(int i = 0; i &lt; maze.length; i++) {<br>            for(int j = 0; j &lt; maze[i].length; j++) {<br>                // 由于mazeBuilder是IMazeBuilder型態(tài)<br>                // 所以無論Builder實例為何,這邊的程式都無需變動<br>               &nbsp;switch (maze[i][j]) {<br>                    case 0:<br>                        mazeBuilder.createRoadBlock();<br>                        break;<br>                    case 1:<br>                        mazeBuilder.createWallBlock();<br>                        break;<br>                    case 2:<br>                        mazeBuilder.createTreasureBlock();<br>                        break;<br>                    default:<br>                        System.out.println("undefined");<br>                }<br>            }<br>            mazeBuilder.nextRow();    <br>        }<br>    }<br>} <br></pre>

<br>

<ul>
  <li> IMazeBuilder.java </li>
</ul>

<pre>public interface IMazeBuilder {<br>    public void createRoadBlock();<br>    public void createWallBlock();<br>    public void createTreasureBlock();<br>    public void nextRow();<br>} <br></pre>

<br>

<ul>
  <li> SoliderMazeBuilder.java </li>
</ul>

<pre>public class SolidMazeBuilder implements IMazeBuilder {<br>    public void createWallBlock() {<br>        System.out.print("█");<br>    }<br>    <br>    public void createRoadBlock() {<br>        System.out.print(" ");<br>    }<br>    <br>    public void createTreasureBlock() {<br>        System.out.print("$ ");<br>    }<br>    <br>    public void nextRow() {<br>        System.out.println();<br>    }<br>} <br></pre>

<br>

<ul>
  <li> DiamondMazeBuilder.java </li>
</ul>

<pre>public class DiamondMazeBuilder implements IMazeBuilder {<br>    public void createWallBlock() {<br>        System.out.print("◇");<br>    }<br>    <br>    public void createRoadBlock() {<br>        System.out.print(" ");<br>    }<br>    <br>    public void createTreasureBlock() {<br>        System.out.print("* ");<br>    }<br>    <br>    public void nextRow() {<br>        System.out.println();<br>    }    <br>}  <br></pre>

<br>
使用下面的程式來測試一下,它將產(chǎn)生兩個迷宮圖形:<br>

<pre>public class Main {<br>    public static void main(String[] args) {<br>        int[][] maze = {{1, 1, 1, 1, 1, 1, 1}, <br>                        {1, 0, 0, 0, 0, 2, 1}, <br>                        {1, 0, 1, 0, 1, 0, 1}, <br>                        {1, 0, 2, 1, 0, 1, 1}, <br>                        {1, 1, 0, 1, 0, 1, 1}, <br>                        {1, 0, 0, 2, 0, 0, 1}, <br>                        {1, 1, 1, 1, 1, 1, 1}};<br>        <br>        MazeDirector mazeDirector = new MazeDirector();<br>        mazeDirector.setMaze(maze);<br>        <br>        System.out.println("Build SolidMaze....");<br>        mazeDirector.setMazeBuilder(new SolidMazeBuilder());<br>        mazeDirector.buildMaze();<br>        <br>        System.out.println("Build DiamondMaze....");<br>        <br>        mazeDirector.setMazeBuilder(<br>                       new DiamondMazeBuilder());<br>        mazeDirector.buildMaze();<br>    }<br>} </pre>
<br>
<div style="text-align: center;"><img style="width: 492px; height: 181px;" alt="Builder" title="Builder" src="images/builder-2.jpg"><br>
</div>
<br>
在迷宮例子中并沒有產(chǎn)生或返回產(chǎn)品物件,這視您的需求而定,迷宮例子只是將結果輸出至主控臺,您也可以設計一個產(chǎn)品物件,或是將結果直接輸出為文件。<br>
<br>
在<a href="GoF.htm"> Gof </a>中有給出了一個不錯的例子,以設計文件剖析器為例,該剖析器可以將文件轉(zhuǎn)換為其它的格式,以DOC文件剖析器為例好了,假設希望析剖器可以將DOC文件轉(zhuǎn)換為RTF或是PDF文件,可以如下設計結構:<br>
<div style="text-align: center;"><img style="width: 482px; height: 256px;" alt="Builder" title="Builder" src="images/builder-3.jpg"><br>
</div>
<br>
簡單來說,建筑者模式適用的場合,在于使得您可以依賴抽象的建筑藍圖,而實際建造時可以使用不同的實例,這是其之所以命為Builder的原因。<br>
<br>


</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美卡一卡二| 天天影视涩香欲综合网| 午夜精品福利在线| 国产精品一品二品| 欧美怡红院视频| 国产精品视频免费看| 午夜精品影院在线观看| 91小视频在线免费看| 久久影院视频免费| 日韩成人一区二区三区在线观看| 国产v综合v亚洲欧| 777欧美精品| 亚洲色图在线视频| 国产福利一区二区| 亚洲精品在线网站| 美日韩一区二区| 欧美日韩极品在线观看一区| 一区二区三区四区不卡在线| 国产乱码精品一区二区三区五月婷| 欧美乱熟臀69xxxxxx| 亚洲伊人伊色伊影伊综合网| 成人爽a毛片一区二区免费| 日韩欧美精品三级| 美女视频一区二区三区| 欧美揉bbbbb揉bbbbb| 亚洲一区二区三区美女| 91免费国产视频网站| 国产精品久久二区二区| 国产风韵犹存在线视精品| 久久综合成人精品亚洲另类欧美| 日本中文字幕一区二区视频 | 国产精品资源站在线| 91精品啪在线观看国产60岁| 婷婷六月综合网| 欧美日韩亚洲综合在线| 午夜精品久久久久久不卡8050| 欧美色国产精品| 丝袜美腿一区二区三区| 欧美精品黑人性xxxx| 日本三级韩国三级欧美三级| 日韩美女在线视频| 国产一二三精品| 欧美激情一区不卡| 99久久精品国产麻豆演员表| 中文字幕一区二区三区色视频| av激情成人网| 亚洲成av人片在线| 欧美一区二区三区视频在线| 国产在线播放一区三区四| 国产农村妇女精品| 在线观看日韩国产| 奇米777欧美一区二区| 精品国产1区二区| 成人ar影院免费观看视频| 亚洲欧美电影一区二区| 欧美日本不卡视频| 国产精品88av| 亚洲男人天堂av| 91精品国产高清一区二区三区蜜臀| 九九国产精品视频| 中文字幕字幕中文在线中不卡视频| 91激情在线视频| 久久精品72免费观看| 欧美国产欧美亚州国产日韩mv天天看完整| jlzzjlzz亚洲女人18| 午夜久久电影网| 欧美激情一区二区| 91精品国产福利| 成人av在线资源网站| 五月天亚洲精品| 国产精品女同互慰在线看| 777亚洲妇女| 99免费精品视频| 免费在线成人网| 亚洲欧洲av在线| 日韩欧美视频一区| 91国内精品野花午夜精品| 国内精品伊人久久久久av一坑| 亚洲欧洲三级电影| 精品久久久久久久久久久久久久久久久 | 日韩亚洲欧美一区| 成人av电影在线| 美女免费视频一区二区| 综合久久国产九一剧情麻豆| 日韩美一区二区三区| 欧美主播一区二区三区| 国产盗摄女厕一区二区三区| 亚洲影院久久精品| 综合在线观看色| 久久精品亚洲麻豆av一区二区| 欧美三级中文字| 96av麻豆蜜桃一区二区| 国产一区二区精品久久99| 日韩经典一区二区| 亚洲色图都市小说| 欧美高清在线视频| 久久久电影一区二区三区| 日韩欧美一级特黄在线播放| 色香色香欲天天天影视综合网| 国产成人一级电影| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲乱码国产乱码精品精小说 | 不卡av电影在线播放| 免费成人在线观看| 亚洲最快最全在线视频| 亚洲美女视频在线观看| 久久午夜国产精品| 欧美成人高清电影在线| 91精选在线观看| 欧美中文字幕不卡| 欧美性受极品xxxx喷水| 欧亚一区二区三区| 欧美图区在线视频| 欧美日免费三级在线| 欧美丝袜第三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美久久久久久久久久| 精品1区2区3区| 欧美日韩国产精选| 欧美高清精品3d| 日韩精品一区国产麻豆| 精品精品国产高清一毛片一天堂| 日韩亚洲电影在线| 精品国产百合女同互慰| 精品国产电影一区二区| 国产欧美日韩激情| 亚洲激情六月丁香| 亚洲h动漫在线| 久久电影网站中文字幕| 国产乱码精品一品二品| 成人黄色一级视频| 91成人在线精品| 制服丝袜亚洲色图| 久久久久久黄色| 成人免费在线视频| 午夜精品福利一区二区三区av| 麻豆精品国产传媒mv男同| 国产成人av一区二区三区在线 | 亚洲综合图片区| 日韩高清一区二区| 国产一区欧美二区| 91丨九色丨黑人外教| 欧美精品久久99久久在免费线| 欧美成人a∨高清免费观看| 中文字幕乱码日本亚洲一区二区| 亚洲乱码国产乱码精品精可以看| 香蕉久久夜色精品国产使用方法| 老司机精品视频线观看86| 国产xxx精品视频大全| 欧美午夜不卡在线观看免费| 欧美成人一区二区三区片免费| 国产色产综合产在线视频| 亚洲一级二级三级在线免费观看| 美女免费视频一区二区| 91丨九色丨蝌蚪丨老版| 91精品一区二区三区久久久久久| 国产亚洲人成网站| 亚洲第四色夜色| hitomi一区二区三区精品| 欧美日韩国产乱码电影| 亚洲欧美综合色| 免费欧美高清视频| 91丨九色丨蝌蚪丨老版| 久久综合九色综合欧美98| 亚洲第一精品在线| 96av麻豆蜜桃一区二区| 久久综合久久综合亚洲| 一区二区三区不卡在线观看 | 色婷婷综合久久久中文一区二区 | 99re热视频精品| 精品乱人伦小说| 午夜电影网一区| 91在线你懂得| 国产日韩欧美电影| 奇米色777欧美一区二区| av不卡一区二区三区| 久久午夜色播影院免费高清| 日韩精品电影一区亚洲| 欧美在线视频日韩| 国产精品久久久久久久蜜臀| 久久er99热精品一区二区| 欧美亚洲高清一区| 最新久久zyz资源站| 国产馆精品极品| 久久久久国产精品麻豆| 喷水一区二区三区| 欧美一区二区在线不卡| 亚洲综合视频在线观看| 色婷婷狠狠综合| 亚洲美女视频一区| 色综合久久天天| 一区二区在线观看不卡| 成人激情黄色小说| 国产精品毛片大码女人| 成人午夜av电影| 国产精品视频线看| 91玉足脚交白嫩脚丫在线播放| 中文字幕不卡在线播放| 成人黄色软件下载| 亚洲欧美综合在线精品|