溫故而知新 03建造者模式的實現回顧

2021-10-05 17:51:27 字數 2880 閱讀 1790

意圖:將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。

主要解決:主要解決在軟體系統中,有時候面臨著"乙個複雜物件"的建立工作,其通常由各個部分的子物件用一定的演算法構成;由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。

何時使用:一些基本部件不會變,而其組合經常變化的時候。

如何解決:將變與不變分離開。

關鍵**:建造者:建立和提供例項,導演:管理建造出來的例項的依賴關係。

package

cn.xzc.test.buildermode;/*

* 建造者模式  建立者模式的一種

* 複雜的類通過 簡單的類 組合而來**

* */

public abstract class

builder

public class

product

public void

setbuilda

(string builda)

public

string

getbuildb

() public void

setbuildb

(string buildb)

public

string

getbuildc

() public void

setbuildc

(string buildc)

public

string

getbuildd

() public void

setbuildd

(string buildd)

@override

public

string

tostring

() ';}

} package

cn.xzc.test.buildermode02.demo01

;public class

worker

extends

builder

@override

void

buildea

() @override

void

buildeb

() @override

void

buildec

() @override

void

builded

() @override

product

getproduct()}

package

cn.xzc.test.buildermode02.demo01;/*

* 指揮  核心  指定生產者按一定順序去建造出產品

* */

public class

director }

public class

testforbuildmode }

通常我們的建造順序不需要寫死,建造的內容也需要傳參來決定,使用者作為呼叫者自己決定順序和具體傳入引數。

/**

建造者模式  建立者模式的一種

* 複雜的類通過 簡單的類 組合而來

**  

新增傳入引數和返回值

** */

public abstract class

builder /*

* 實現工人類來執行產品生產 返回值為

this

實現鏈式程式設計

* */

public class

worker

extends

builder

@override

builder

buildea

(string msg)

@override

builder

buildeb

(string msg)

@override

builder

buildec

(string msg)

@override

builder

builded

(string msg)

@override

product

getproduct()}

package

cn.xzc.test.buildermode02.demo02

;public class

product

public void

setbuilda

(string builda)

public

string

getbuildb

() public void

setbuildb

(string buildb)

public

string

getbuildc

() public void

setbuildc

(string buildc)

public

string

getbuildd

() public void

setbuildd

(string buildd)

@override

public

string

tostring

() ';}

} 最後測試

public class

testforbuildmode }

溫故而知新

堆排 建立堆,維護堆的屬性 一次拿掉乙個,然後維護屬性,二分的結構 使得維護屬性只要logn的時間 冒泡也是一次拿走乙個 但是線性的結構 每次沒有節省時間 快排 一次確定 乙個值的位置,然後二分,縮小問題的範圍。floyd找最短 一次更新 將狀態改為經過固定點的 最短距離 迴圈 遍歷每個點,則結果為...

溫故而知新(一)

一 c 基礎語法 1.注釋符 b.解釋所寫的 2.vs中常用的快捷鍵 3.變數 用來在計算機中儲存資料 b.要給儲存空間起乙個有意義的名字,方便我們以後的使用 b.變數型別 變數名 值 4.命名規則 5.號的使用 6.佔位符的使用 先挖坑,再填坑 異常 exception 在程式執行的過程中,由於某...

C 陣列 溫故而知新

using system using system.collections.generic using system.linq using system.text namespace 陣列 陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用 int iii new int 用花括號初始化陣...