亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

設計模式之構建(Builder)模式 建造房子實例分析

 更新時間:2012年12月07日 12:07:35   作者:  
構建模式主要用來針對復雜產品生產,分離部件構建細節(jié),以達到良好的伸縮性,考慮到設計模式來源于建筑學,因此舉一個建造房子的例子,需要的朋友可以參考下
構建模式主要用來針對復雜產品生產,分離部件構建細節(jié),以達到良好的伸縮性。
考慮到設計模式來源于建筑學,因此舉一個建造房子的例子?,F在一個客戶要建造一棟房子House,
復制代碼 代碼如下:

public class House{
//客戶需求的房子
}

那么他首先需要一個設計師—Designer,但是設計師只能做設計,指示如何去建造房子,可是他并不會親自去做,那么就還需要一個施工隊伍BuildTeam,那么首先,Designer要設計出來如何去建造這棟房子,首先要施工隊打地基,然后施工隊要架骨架、接著上水泥等等(具體如何不得而知,需要請教專業(yè)人士),那么從這里我們可以知道設計師對施工隊是有要求的,那就是施工隊必須要會打地基、會架骨架、會上水泥等,因此得出如下招聘施工隊的要求:
復制代碼 代碼如下:

public interface BuildTeam{
public void 打地基();
public void 架骨架();
public void 上水泥();
。。。。。。
}

從上可以看出,要想做這個工程的施工隊伍,必須首先符號上面的條件,會做上面所有的事情。根據設計師的設計,又得知設計師會向施工隊下達一個命令,然后施工隊按照設計師的要求開始施工:
復制代碼 代碼如下:

public class Designer{
public void construct(BuildTeam team){
team.打地基();
team.架骨架();
team.上水泥();
}
}

由于從頭到尾都是設計師在下指令設計,而施工隊進行實際施工,所以客戶最終會找施工隊驗收房子,因此施工隊必須要交付房子給客戶,因此施工隊需要加上一個交付房子的條款,不然房子做成了,但是施工隊卻不交付給我,那不是吃虧了,因此:
復制代碼 代碼如下:

public interface BuildTeam{
public void 打地基();
public void 架骨架();
public void 上水泥();
。。。。。。
public House deliverHouse(); //增加一個交付房子的方法。
}

好了,房子設計好了,如何做也設計好了,如今就差給誰來做了,現在有一個施工隊:
復制代碼 代碼如下:

public class BuildTeamA extends BuildTeam{
public void 打地基(){}
public void 架骨架(){}
public void 上水泥(){}
。。。。。。
public House deliverHouse(){}
}

從施工隊的情況來看, 這個施工隊完全符合設計師對施工隊的要求,既接口BuildTeam,好,那么最終決定由他們來做,從頭到尾全部流程如下:
Designer designer = new Designer(); //找到一個設計師
BuildTeam teamA = new BuildTeamA(); //找到一個施工隊伍BuildTeamA
designer.construct(teamA); //設計師下命令,讓施工隊伍按照他的設計開始建造
House house = teamA.deliverHouse(); //施工隊完成后交付房子
第一棟房子終于建成了,此時同一個客戶覺得這個設計師的設計不錯,于是決定還要使用他的設計并由他指示施工隊再造一棟同樣的房子,可是施工隊BuildTeamA突然獅子大開口,想要更多的錢,客戶為了節(jié)省成本,只好再次招聘一個新的施工隊進行施工,剛好有個施工隊伍BuildTeamB符合要求,于是流程如下:
復制代碼 代碼如下:

BuildTeam teamB = new BuildTeamB();
designer.construct(teamB); //由于設計師沒變,且造同樣的房子,所以designer不需要重新找,只需要把他指示的施工隊換成BuildTeamB即可
House house = teamB.deliverHouse(); //施工隊完成后交付房子

好了,第二棟房子也完成了,但是整個流程上并沒有太大的變動,由于使用了構建模式,整個流程分工非常明確,客戶不需要參與任何設計以及建造,設計師只負責設計以及下命令,而施工隊也僅僅只負責具體的實現細節(jié),使得建造明細獨立出來,隨時更換不同的施工隊均可。

相關文章

  • Java游戲服務器系列之Netty相關知識總結

    Java游戲服務器系列之Netty相關知識總結

    今天帶大家來學習Java游戲服務器的相關知識,文中對Netty作了非常詳細的介紹,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Spring boot 添加jsp支持配置詳解

    Spring boot 添加jsp支持配置詳解

    本篇文章主要介紹了Spring boot 添加jsp支持配置詳解,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java Hibernate中的查詢策略和抓取策略

    Java Hibernate中的查詢策略和抓取策略

    Hibernate是一種Java對象關系映射框架,提供了多種查詢和抓取策略,用于優(yōu)化數據庫訪問性能。查詢策略包括延遲加載、立即加載、查詢緩存等,抓取策略包括join抓取、子查詢抓取、批量抓取等。這些策略可以根據實際應用場景進行選擇和配置,提高數據訪問的效率和穩(wěn)定性
    2023-04-04
  • Java多線程 Producer and Consumer設計模式

    Java多線程 Producer and Consumer設計模式

    這篇文章主要介紹了Java多線程 Producer and Consumer設計模式,producer是生產者的意思:指生產數據的線程,consumer是消費者的意思,指的是使用數據的線程,下文圍繞Producer及Consumer展開話題,需要的朋友可以參考一下
    2021-10-10
  • Java thrift服務器和客戶端創(chuàng)建實例代碼

    Java thrift服務器和客戶端創(chuàng)建實例代碼

    Thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發(fā)。接下來通過本文給大家介紹Java thrift服務器和客戶端創(chuàng)建實例代碼,需要的朋友參考下吧
    2017-04-04
  • SpringBoot2 整合Ehcache組件,輕量級緩存管理的原理解析

    SpringBoot2 整合Ehcache組件,輕量級緩存管理的原理解析

    這篇文章主要介紹了SpringBoot2 整合Ehcache組件,輕量級緩存管理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

    詳解使用JavaCV/OpenCV抓取并存儲攝像頭圖像

    本篇文章主要介紹了使用JavaCV/OpenCV抓取并存儲攝像頭圖像,實例分析了使用JavaCV/OpenCV抓取并存儲攝像頭圖像的技巧,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • Spring整合mybatis、springMVC總結

    Spring整合mybatis、springMVC總結

    這篇文章主要為大家詳細介紹了Java整合Mybatis,SpringMVC,文中有詳細的代碼示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-05-05
  • java基于TCP協(xié)議實現聊天程序

    java基于TCP協(xié)議實現聊天程序

    這篇文章主要為大家詳細介紹了java基于TCP協(xié)議實現聊天程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 淺析Java中局部變量與成員變量同名解決技巧

    淺析Java中局部變量與成員變量同名解決技巧

    在剛開始學習Java的時候,就了解了Java基礎中的變量,雖然知道這個以后會經常用到,但沒想到了基本語法這里,竟然又冒出來了成員變量和局部變量。變來變去太容易讓人搞暈了,今天我們就挑揀出來梳理一下!
    2016-07-07

最新評論