建造者模式的(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...