Java設計模式學習筆記 2

2021-08-07 18:07:54 字數 2559 閱讀 7072

建造者模式的(builder),將乙個複雜物件的構建與它的表示分離,使同樣的構建過程可以建立不同的標識。簡單的用生產兩個大小不同的零件舉例

product—零件類,由2個部件組成

public

class product

public

void

setpartb(string partb)

}

productbuilder介面—建造者介面,是為建立product物件的各個部件而指定的抽象介面

public

inte***ce productbuilder

director—控制建造過程

public

class director

}

bigproduct—具體的建造者類,用於構造和裝配各個部件

public

class

bigproductbuilder

implements

productbuilder

@override

public

void

buildpartb()

@override

public product getresult()

}

smallproduct—具體的建造者類(**略)

客戶端**

//建立乙個大零件物件

productbuilder builder1 =new bigproductbuilder();

//建立乙個小零件物件

productbuilder builder2 =new smallproductbuilder();

//建立組裝流程物件

director director=new director();

//通過組裝流程物件組裝大小兩個零件

product big=director.createproduct(builder1);

product small=director.createproduct(builder2);

裝飾模式,動態的給乙個物件新增一些額外的職責。

與建造者模式的固定裝配流程相比,裝飾模式則隨意得多。之前網上看到乙個漢堡的例子,特別形象

humburger—漢堡類(被裝飾者基類)

public

abstract

class humburger

abstract

double getprice();

}

chickenburger—雞腿堡類(被裝飾者的初始狀態)

public

class

chickenburger

extends

humburger

@override

public

double

getprice()

}

condiment —配料的基類(裝飾者,用來對漢堡進行多層裝飾,每層裝飾增加一些配料)

public

abstract

class

condiment

extends

humburger

lettuce—生菜(裝飾者的第一層)

public

class

lettuce

extends

condiment

@override

double getprice()

@override

public string getname()

}

chilli—辣椒(裝飾者的第二層)

public

class

chilli

extends

condiment

@override

double getprice()

@override

public string getname()

}

客戶端**

humburger humburger=

new chickenburger();

humburger addlettuce =

new lettuce(humburger);

humburger addchilli =

new chilli(addlettuce);

log.d(tag, "humburger: "

+addchilli.getname());

結果:humburger: 雞腿堡 加生菜 加辣椒

通過對比不難發現,建造者模式要求建造的過程必須是穩定的。而裝飾模式的過程不是穩定的。裝飾模式是對於乙個東西做的是表面外部的裝扮,屬於對乙個物件的拓展,而建造者模式是對乙個東西整體框架的乙個組裝,屬於對乙個物件的建造。

java設計模式學習 2 工廠模式

工廠模式分為 簡單工廠模式 靜態工廠模式 工廠方法模式 多型性工廠模式或者虛擬工廠模式 抽象工廠模式。簡單工廠模式 工廠類根據傳入的引數決定建立出哪一種產品類的例項。簡單工廠模式涉及到3個角色 工廠角色,抽象產品角色,具體產品角色。工廠方法模式 工廠方法模式涉及到4個角色 抽象工廠角色,具體工廠角色...

學習筆記 Java設計模式 命令模式

最近做開發發現自己 邏輯混亂,覺得有必要重溫下設計模式。於是就翻到了終點大神的部落格在這裡記錄下自己的學習後的理解。命令模式 命令模式的主要目的,用官話來說,是將呼叫者與執行者解耦。將 結構劃分為呼叫者 命令 執行者三個部分。其中,執行者作為命令的屬性被設定,因此,也可以理解為呼叫者 命令 執行者 ...

Java設計模式學習筆記1

用最簡單加減法來舉例 calculate 計算方法介面 public inte ce calculate分別建立add以及sub子類並實現其邏輯 public class addimplements calculate public class subimplements calculate 建立c...