設計模式之建造者模式

2021-09-08 12:05:47 字數 2305 閱讀 3879

建造者設計模式屬於建立性模式,其目的在於將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

比如建造一輛汽車,呼叫者不需要知道汽車(先生產引擎、輪胎、汽車框架等零件,再按一定順序)是如何生產,只需要交給director乙個具體的建造者,就能生產出一輛相應的汽車,比如告訴director,給我生產一輛奧迪,結果返回一輛奧迪給你。

1、複雜的物件product

/**

* * * car 建造者模式中的 複雜物件

* *

* @author

yangkj

* @version

* @since

2023年8月31日 */

public

class

car

public

enginer getenginer()

public

void

setenginer(enginer enginer)

public

tyre gettyre()

public

void

settyre(tyre tyre)

public

carframe getcarframe()

public

void

setcarframe(carframe carframe)

}class

enginer

public

void

setname(string name)

public

enginer(string name)

}class

tyre

public

void

setname(string name)

public

tyre(string name)

}class

carframe

public

void

setname(string name)

public

carframe(string name)

}

view code

2、builder:

/**

* * * builder 抽象的建造者介面,定義要建造的汽車零件

* *

* @author

yangkj

* @version

* @since

2023年8月31日 */

public

inte***ce

builder

view code

3、concretebuilder

/**

* * * audibuilder 繼承builder的奧迪汽車的建造者,負責建立具體的零件

* *

* @author

yangkj

* @version

* @since

2023年8月31日 */

public

class audibuilder implements

builder

public

tyre buildertyre()

public

carframe buildercarframe()

}

view code

4、director

/**

* * * director

* 導演:呼叫傳入的建造者,產生出相應的零件,再按一定的順序組裝(如果不同汽車組裝順序不同,我們可以再把director抽象成介面,按照不同的汽車,

* 再組裝即可)

* *

* @author

yangkj

* @version

* @since

2023年8月31日 */

public

class

director

public

car directorcar()

}

view code

5、客戶端測試類

/**

* * * client 客戶端

* *

* @author

yangkj

* @version

* @since

2023年8月31日 */

public

class

client

}

view code

設計模式之建造者模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟 設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設 計模式 和...

設計模式之建造者模式

建造者模式也叫生成器模式,是一種物件建立型模式,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承或過載的方式,動態的建立具有復合屬性的物件。應用場景 物件的建立 builder 模式是為物件的建立而設計的模式 建立的是乙個復合物件 被建立的物件為乙個具有復合屬性的復合物件 關...

設計模式之建造者模式

在做服務介面的時候,往往在業務處理之前需要做業務校驗,格式校驗等業務前處理。這些介面有個相同的特徵,就是必須經過這些處理步驟之後才能做核心的業務處理,拓展的服務介面也必須經過這些處理。基於這個特徵,我們就來分析一下設計模式中,建造者模式。我們先建乙個基礎的服務類 public abstract cl...