《軟體設計精要與模式》讀書筆記 三

2022-01-30 01:21:18 字數 2984 閱讀 8769

第三章 體驗重構

個人強烈推薦《重構--改善既有**的設計》(不過建議有2年以上的開發人員看,太早看是浪費時間)。

本章,作者用來乙個階乘容器的設計來說明重構。

3.1 乙個階乘容器

通常,作為乙個初學者,我們的**最初會設計如下:

code

class

factorialcontainer

public

factorialcontainer(

intcapacity)

protected

arraylist m_factoriallist;

protected

intm_capacity;

public

intcapacity

set}

public

long

this

[int

index]

set}

public

void

add()

m_factoriallist.add(result);

}public

void

removeat(

intindex)

public

void

clear()

}3.2 **的壞味道

上面的**計算階乘的演算法與元素的新增行為緊密的糾纏在一起。根據職責分離原則,需要進行分離。

code

public

void

add()

private

long

countfactorial()

return

result;

}3.3 需求發生變化

後來我們的需求發生變化,需要增加菲波那契數列的計算。

經過重構:

code

public

abstract

class

mathcontainer

public

mathcontainer(

intcapacity)

protected

arraylist m_mathlist;

protected

intm_capacity;

public

intcapacity

set}

public

long

this

[int

index]

set}

public

void

add()

public

void

removeat(

intindex)

public

void

clear()

protected

abstract

long

count();

}code

public

class

factorialcontainer : mathcontainer

public

factorialcontainer(

intcapacity) : 

base

(capacity) 

protected

override

long

count()

return

result;}}

public

class

fibonaccicontainer : mathcontainer

public

fibonaccicontainer(

intcapacity) : 

base

(capacity) 

protected

override

long

count()

else

return

result;}}

呵呵,上面是template method 模式。

3.5引入設計模式

使用工廠模式來管理例項的建立。

code

public

abstract

class

mathfactory

public

class

factorialfactory : mathfactory

public

override

mathcontainer createinstance(

intcapacity)

} public

class

fibonaccifactory : mathfactory

public

override

mathcontainer createinstance(

intcapacity)

} 通過工廠物件,通過它來建立需要的具體容器類物件了。

code

[stathread]

static

void

main(

string

args)

for(

inti =0

; i 

<

8; i++)

console.writeline();

console.writeline(

"count fibonacci form 1 to 8:");

for(

inti =1

; i 

<=

8; i++)

for(

inti =0

; i 

<

8; i++)

console.readline();

}

《軟體設計精要與模式》讀書筆記(一) 設計之道

架構設計需要關注內容 1.程式組織 program organization 劃分功能模組,正確描述模組間關係,利用高內聚低耦合設計思想與原則對功能模組以元件或者包的形式進行封裝。根據面向介面設計原理將元件和包進行抽象,公開暴露服務介面。利用分層架構模式,通過引入分層模式,分離不同的功能模組,根據層...

《軟體設計精要與模式》

給我乙個支點,我就能撬起地球 關鍵不在於力量有多大,而在於如何合理地利用力量。軟體設計同樣如此。思想的確立,技巧的把握,將在很大程度上決定軟 件架構的合理性。基於這樣的目的,本書圍繞著軟體設計的核心內容,結合大量的例項與 充分地展示了軟體設計之美,以及設計 力量 的巧妙運用。內容涵 蓋了設計模式 重...

書評 軟體設計精要與模式

書評 軟體設計精要與模式 終於閱讀完了張逸先生的 軟體設計精要與模式 一書,掩卷沉思,書中對於軟體設計這門學問的理解和闡述讓我受益良多,潛移默化之中,我對於軟體設計的過程以及模式的使用又有了新的認識。因此,我對此書的評價是一本不可多得的優秀書籍。不能光說優秀,到底優秀在何處呢?個人感覺有以下幾點 首...