知了堂學習筆記 設計模式之工廠模式

2021-08-14 23:39:18 字數 3414 閱讀 4343

文章**:

簡單工廠(靜態)

特點:

1.它是乙個具體的類,非介面抽象類。通過create()方法,利用if或者switch建立產品並返回。

2.create()方法通常是靜態的,也成為靜態工廠。

缺點:

1.擴充套件性差

2.不同的產品需要不同額外引數的時候不支援。

package model;

//簡單(靜態)工廠

public

abstract

class

dumplings

package model;

/** * 工廠模式

* @author administrator

* */

public

class

modeltest2

}class

bcdumplings

extends

dumplings

}class

jcdumplings

extends

dumplings

}class

lbdumplings

extends

dumplings

}class

******factory

}}

簡單工廠(反射)

特點:

它也是乙個具體的類,非介面抽象類。但它的create()方法,是利用反射機制生成物件返回,好處是增加一種產品時,不需要修改create()的**。

缺點:

class.forname(clz.getname()).newinstance()呼叫的是無參建構函式生成物件,它和new object()是一樣的性質,而工廠方法應該用於複雜物件的初始化 ,當需要呼叫有參的建構函式時便無能為力了。

不同的產品需要不同額外引數的時候不支援。

public

class modeltest2

}

class staticfactory catch (instantiationexception | illegalacces***ception | classnotfoundexception e) 

return result;

}}

多方法工廠

多方法的工廠模式為不同產品,提供不同的生產方法,使用時 需要哪種產品就呼叫該種產品的方法,使用方便、容錯率高

public

class modeltest2

class mulwayfactory 

/*** 生產韭菜餃子

*@return

*/public

static dumplings createjc()

/*** 生產蘿蔔餃子

*@return

*/public

static dumplings cretelb()

}

普通工廠

普通工廠與簡單工廠模式的區別:

可以看出,普通工廠模式特點:不僅僅做出來的產品要抽象, 工廠也應該需要抽象。工廠方法使乙個產品類的例項化延遲到其具體工廠子類工廠方法的好處就是更擁抱變化。當需求變化,只需要增刪相應的類,不需要修改已有的類。而簡單工廠需要修改工廠類的create()方法,多方法靜態工廠模式需要增加乙個靜態方法。

缺點:

引入抽象工廠層後,每次新增乙個具體產品類,也要同時新增乙個具體工廠類,所以我更青睞 多方法靜態工廠。

package model;

/** * 普通工廠模式

* @author administrator

* */

public class

modeltest3

}/**

* 抽象工廠類

* 生產餃子

* @author administrator

* */

abstract

class

dumplingsfactory

class

bcfactory

extends

dumplingsfactory

}class

jcfactory

extends

dumplingsfactory

}class

lbfactory

extends

dumplingsfactory

}

抽象工廠

缺點:

將工廠也抽象後,有個顯著問題,每次拓展新產品種類,需要修改抽象工廠類,因此所有的具體工廠子類,都被牽連,需要同步被修改。

package model;

/** * 食物抽象類

*@author administrator

* */

public

abstract

class

food

package model;

/** * 飲料抽象類

*@author administrator

* */

public

abstract

class

drinks

package model;

/** * 抽象工廠

* @author administrator

* */

public class

modeltest4

}abstract

class

abstractfoodfactory

class

coladrinks

extends

drinks

}class

waterdrinks

extends

drinks

}class

latiaofood

extends

food

}class

dangaofood

extends

food

}class

foodfactory

extends

abstractfoodfactory

@override

public food createfood()

}

知了堂學習筆記 設計模式之單例模式

1.確保乙個類只有乙個例項,自行例項化並向系統提供這個例項 2.單例模式分類 3.單例模式要素 餓漢式單例 在單例類被載入時候,就例項化乙個物件交給自己的引用 懶漢式單例 在呼叫取得例項方法的時候才會例項化物件 4.單例模式的優點 5.例項 package singleton 懶漢式單例類,在第一次...

知了堂學習筆記 設計模式之單例模式

介紹 singleton是一種建立型模式,指某個類採用singleton模式,則在這個類被建立後,只可能產生乙個例項供外部訪問,並且提供乙個全域性的訪問點。全域性物件和singleton模式有本質的區別,因為大量使用全域性物件會使得程式質量降低,而且有些程式語言根本不支援全域性變數。最重要的是傳統的...

知了堂學習筆記 執行緒2

1.執行緒的狀態 new thread 執行緒被建立 執行緒可執行狀態,搶到cpu才是真正的執行狀態 執行過程中cpu被搶 sleep wait 阻塞 結束 執行緒自動執行完 推薦 標誌位 2.執行緒的常用方法 sleep 執行緒休眠 讓出cpu,不讓出鎖 interrupt 打斷執行緒的sleep...