日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

23种设计模式----------建造者模式

發(fā)布時(shí)間:2023/11/30 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23种设计模式----------建造者模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

建造者模式:像是模板方法模式的升級。也叫生成器模式。將一個(gè)復(fù)雜對象的構(gòu)造與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。其實(shí)就是創(chuàng)建一大類的東西, 但是具體又有些差異。

在建造者模式中,一般有四個(gè)角色:

1,Product產(chǎn)品類。

  該類一般實(shí)現(xiàn)了模板方法模式。

2,Builder抽象的建造者。

  規(guī)范產(chǎn)品的組建,一般是由子類實(shí)現(xiàn)。

3,ConcreteBuilder具體的建造者。

  實(shí)現(xiàn)抽象類定義的所有方法,并且可以返回一個(gè)組建好的具體對象。

4,Director導(dǎo)演類(一般是包涵多種具體產(chǎn)品差異的方法)。

大致示例代碼:

Product類:

1 package com.yemaozi.builderpattern; 2 3 public abstract class Product { 4 //一般實(shí)現(xiàn)模板方法的抽象類。 5 }

具體的Product類:

//ProductA package com.yemaozi.builderpattern;public class ProductA extends Product{public void doSomething(){} } //ProductB package com.yemaozi.builderpattern;public class ProductB extends Product{public void doSomethding(){} }

建造器:

1 package com.yemaozi.builderpattern; 2 3 public interface Builder { 4 //設(shè)置產(chǎn)品不同的方法 5 public abstract void setPart(); 6 //構(gòu)建產(chǎn)品 7 public abstract Product builderProduct(); 8 }

具體的建造器,具體的建造器個(gè)數(shù)與具體產(chǎn)品類的數(shù)目一致。

1 //ConcreteBuilderA 2 package com.yemaozi.builderpattern; 3 4 public class ConcreteBuilderA implements Builder{ 5 6 Product p = new ProductA(); 7 8 public void setPart() { 9 } 10 11 public Product builderProduct() { 12 return p; 13 } 14 } 15 //ConcreteBuilderB 16 package com.yemaozi.builderpattern; 17 18 public class ConcreteBuilderB implements Builder{ 19 20 Product p = new ProductB(); 21 22 public void setPart() { 23 } 24 25 public Product builderProduct() { 26 return p; 27 } 28 }

導(dǎo)演類:導(dǎo)演類一般是為了預(yù)設(shè)置不同產(chǎn)品差異的,若是想得到對應(yīng)的產(chǎn)品,直接到Director里獲取,因?yàn)?#xff0c;該類就是為了生產(chǎn)出所有的產(chǎn)品,以供獲取。導(dǎo)演類一般可以有多個(gè)。

1 package com.yemaozi.builderpattern; 2 3 public class Director { 4 private Builder b1 = new ConcreteBuilderA(); 5 private Builder b2 = new ConcreteBuilderB(); 6 //構(gòu)建A產(chǎn)品 7 public Product getProductA(){ 8 b1.setPart(); 9 Product p = b1.builderProduct(); 10 return p; 11 } 12 //構(gòu)建B產(chǎn)品 13 public Product getProductB(){ 14 b2.setPart(); 15 return b2.builderProduct(); 16 } 17 }

此外,建造者模式還有一個(gè)重要的角色,就是零件(理解為產(chǎn)品類里的方法),建造者是通過零件的組裝來創(chuàng)建對象。組裝順序不同(調(diào)用方法順序不同),建造的對象就會有著差異,也是,建造者模式要表達(dá)的核心意義。說白了,建造者最主要的功能是基本方法的調(diào)用順序的安排。

和工廠模式的差異:

  工廠方法模式重點(diǎn)是創(chuàng)建。創(chuàng)建零件是它的主要職責(zé),組裝順序不是它關(guān)心的。

  建造者模式重點(diǎn)是對已產(chǎn)生的零件進(jìn)行組裝。從而也達(dá)到創(chuàng)建對象的效果。

?

轉(zhuǎn)載于:https://www.cnblogs.com/yemaozistar/p/4158764.html

總結(jié)

以上是生活随笔為你收集整理的23种设计模式----------建造者模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。