大話設計模式java版--建造者模式
建造者模式用來解決的問題是建造的將流程與細節分開來處理的。例如:樓房的建造流程是固定的,但是具體的建造是不一定的。還有漢堡的製造流程是固定的,但是具體的用的材料和細節是不一定的,這時候建造者模式就是為了解決這個問題出現的。
建造者模式:是將一個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。引用GOF。
結合《大話設計模式》看看。 問題:製造一個人,頭,雙手,雙腳。 分析:人的頭,雙手和雙腳是建造一個人的工序,但是有可能因為每個人的頭不同而不同,就是說細節是變化的,而製造方法是一樣的。 而最終的交付結果當然是針對人來設計的。因此先有類peoduct。 Product.java在這個Product類中我們附加上了新增部件的函式add(); 接著根據面向介面程式設計,於是有了 PersonBuilder.javapackage com.jing.builder; import java.util.ArrayList; import java.util.List; public class Product { private List<String> productParts = new ArrayList<String>(); public void add(String part){ productParts.add(part); } public void show(){ for(String part:productParts){ System.out.println(part); } } }
package com.jing.builder; public interface PersonBuilder { public void builderHead(); public void builderLHand(); public void builderRHand(); public void builderLfOOT(); public void builderRFoot(); public Product getResult(); }
實現介面,肥的建造類 PersonFatConcreteBuilder.java
實現介面,瘦的建造類package com.jing.builder; public class PersonFatConcreteBuilder implements PersonBuilder{ //ConcreteBuilder 是對product進行元件部分的建造 private Product product = new Product();; @Override public void builderHead() { product.add("fat head"); } @Override public void builderLHand() { product.add("fat Lhand"); } @Override public void builderRHand() { product.add("fatRhand"); } @Override public void builderLfOOT() { product.add("fatLfoot"); } @Override public void builderRFoot() { product.add("fat Rfoot"); } @Override public Product getResult() { return product; } }
package com.jing.builder;
public class PersonThinConcreteBuilder implements PersonBuilder{
//ConcreteBuilder 是對product進行元件部分的建造
private Product product = new Product();
@Override
public void builderHead() {
product.add("thin head");
}
@Override
public void builderLHand() {
product.add("thin hand");
}
@Override
public void builderRHand() {
product.add("thin hand");
}
@Override
public void builderLfOOT() {
product.add("thin foot");
}
@Override
public void builderRFoot() {
product.add("thin foot");
}
@Override
public Product getResult() {
return product;
}
}
零件都有了。這時我們需要指揮官指揮流程!!!!!注意:指揮官是隻負責指揮!指揮官是隻負責指揮!指揮官是隻負責指揮!重要的事情講三遍!!
package com.jing.builder;
public class PersonDirector {
//具體的產品生產交給Director來處理指揮 返回值是空 指揮官僅僅作為指揮 不負責製造
public void constructNormalPerson(PersonBuilder builder){
builder.builderHead();
builder.builderLfOOT();
builder.builderLHand();
builder.builderRFoot();
builder.builderRHand();
}
}
實現的細節都再具體的builder裡面。
package com.jing.builder;
public class Main {
public static void main(String[] args) {
PersonDirector director = new PersonDirector();//指揮官
PersonBuilder fatBuilder = new PersonFatConcreteBuilder();//製造廠
PersonBuilder thinBuilder = new PersonThinConcreteBuilder();//製造廠
director.constructNormalPerson(fatBuilder);// 指揮官指揮fatBuilder製造正常人類
Product fatPerson = fatBuilder.getResult();//獲取產品
fatPerson.show();
director.constructNormalPerson(thinBuilder);
Product thinPerson = thinBuilder.getResult();
thinPerson.show();
}
}
建造者模式就是這樣子了。。。
相關推薦
大話設計模式java版--建造者模式
建造者模式用來解決的問題是建造的將流程與細節分開來處理的。例如:樓房的建造流程是固定的,但是具體的建造是不一定的。還有漢堡的製造流程是固定的,但是具體的用的材料和細節是不一定的,這時候建造者模式就是為了解決這個問題出現的。 建造者模式:是將一個複雜的物件的構建與它的表示分離
Java設計模式百例 - 建造者模式
java設計模式本文源碼見:https://github.com/get-set/get-designpatterns/tree/master/builder建造者模式(Builder Pattern)使用多個簡單的對象一步一步構建成一個復雜的對象,這種類型的設計模式屬於創建型模式。建造模式可以將一個復雜對象
Java設計模式4:建造者模式
一、什麼是建造者模式? 1、定義: 是將一個複雜的物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。 工廠類模式提供的是建立單個類的模式,而建造者模式則是將各種產品集中起來進行管理,用來建立複合物件,所謂複合物件就是指某個類具有不同的屬性,其實建造者模式就
大話設計模式六:建造者模式
一.模式定義 物件建立型模式。實現複雜物件的構建與表示分離,使得同樣的構建過程可以建立不同的表示。 建造者模式是一步一步建立一個複雜的物件,它允許使用者只通過指定複雜物件的型別和內容就可以構建它們,使用者不需要知道內部的具體構建細節。 Builder Pattern: Se
java常用設計模式四:建造者模式
規則 擴展 cto 抽象 具體類 代碼量 特定 clas class 1、定義 是一種對象構建的設計模式,它可以將復雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現方法可以構造出不同表現(屬性)的對象。 產品類:一般是一個較為復雜的對象,也就是說創建對象的過
Java進階篇設計模式之三 ----- 建造者模式和原型模式
前言 在上一篇中我們學習了工廠模式,介紹了簡單工廠模式、工廠方法和抽象工廠模式。本篇則介紹設計模式中屬於建立型模式的建造者模式和原型模式。 建造者模式 簡介 建造者模式是屬於建立型模式。建造者模式使用多個簡單的物件一步一步構建成一個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式
Java 設計模式情景分析——建造者模式
當我們遇到類似汽車的裝配,需要車輪、方向盤、發動機,還有各種小零件時,為了在構建過程中隱藏實現細節,就可以使用建造者模式 (Builder模式) 將部件和組裝過程分離,使得構建過程和部件都可以自由擴充套件,兩者之間的耦合也降到最低。接下來我們看一下定義,建造
大話設計模式java版--簡單工廠模式
剛剛學習了系統分析與設計,發現設計模式真的是個好東西。因此看了下好久之前買的《大話設計模式》,因此總結下最近的學習的設計模式,廢話到此結束。 這裡的程式碼跟書上的差不多,但書上的是C#版的,這裡我自己重新寫的是Java的。。。。其實都差不多,好不好 現在就簡單說說簡單工廠模
Java設計模式14:建造者模式
什麼是建造者模式 發現很多框架的原始碼使用了建造者模式,看了一下覺得挺實用的,就寫篇文章學習一下,順便分享給大家。 建造者模式是什麼呢?用一句話概括就是建造者模式的目的是為了分離物件的屬性與建立過程,是的,只要記住並理解紅字的幾個部分,建造者模式你就懂了。 為什麼需要建造者模式 建造者
重學 Java 設計模式:實戰建造者模式
![](https://img-blog.csdnimg.cn/20200526233834999.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1l
我的設計模式:從模版設計模式談到建造者模式
模版設計模式 建造者模式 導演模式 1.模版設計模式 TemplateMethod Pattern問題:創建模型,如何處理更好?有共性有異性,共性放在哪裏(abstract)?異性放在哪裏(實現)? 缺陷:暴露方法好嗎?protected保護起來 方法不會被子類繼承修改final
淺析設計模式(七)——創建型模式之Builder(建造者模式)
main方法 ref 內部 spa implement line pat 接口 及其 建造者模式Builder 本文的內容: 一、建造者模式的定義 二、建造者模式的參與者及其角色 三、建造者模式的類圖 四、建造者模式的示例 五、參考 一、建造者模式的定義 將一個復
設計模式:builder 建造者模式
設計模式能很好的解決多引數構造複雜的問題,程式碼可讀性高,易維護,缺點是過於冗長。其基本思想是在構造的類中,使用一個靜態內部Builder類提供的build方法來構造該物件,Builder內部類對所有的引數有方法化。 https://blog.csdn.net/xu404741377/a
深入淺出設計模式python版——觀察者模式(observer)
書中第二個設計模式——觀察者模式 首先,祭出類圖 書中舉得例子: 一般方式 使用java內建模組的方式 python程式碼: 主題/可觀察者: # -*- coding:utf-8 -*- #Subject.py import Observer class
遊戲中的設計模式七(建造者模式)
好久沒有更新設計模式系列教程了本文給大家介紹建造者模式寫在前面在建立遊戲物件時往往一個物件伴隨著多個屬性或建立邏輯此時為了構建這個複雜的遊戲物件將各個部分的邏輯進行分離(與工廠模式最主要的作用區別)案例分析建造者類using System.Collections; using
設計模式--淺談建造者模式
建造者模式的優缺點和使用環境 1.優點:(1)客戶端不必知道產品內部組成的細節,將產品本身與產品的建立過程解耦,使得相同的建立過程可建立不同的產品物件 (2)每一個建造者都相對獨立,與其他的建造者無關,因此可以很方便的替換具體建造者或增加新的具體建造者,使用者使用不同的建
設計模式讀書筆記-----建造者模式
流水作業大家應該都清楚吧!在流水作業中,我們可以將一些複雜的東西給構建出來,例如汽車。我們都知道汽車內部構件比較複雜,由很多部件組成,例如車輪、車門、發動機、方向盤等等,對於我們使用者來
設計模式之Builder建造者模式 代碼初見
() 分享 void this emp 技術 傳送門 birt pat public class EmployeeBuilder { private int id = 1; private string firstname = "first&quo
設計模式系列之建造者模式(Builder Pattern)——複雜物件的組裝與建立
說明:設計模式系列文章是讀`劉偉`所著`《設計模式的藝術之道(軟體開發人員內功修煉之道)》`一書的閱讀筆記。個人感覺這本書講的不錯,有興趣推薦讀一讀。詳細內容也可以看看此書作者的部落格`https://blog.csdn.net/LoveLion/article/details/17517213` ## 模
java23種設計模式——五、建造者模式
原始碼在我的[github](https://github.com/witmy/JavaDesignPattern)和[gitee](https://gitee.com/witmy/JavaDesignPattern)中獲取 # 目錄 [java23種設計模式—— 一、設計模式介紹](https://www.