所謂的工廠模式,就是將物件的建立交給乙個工廠類來管理建立,使用者不需要關注物件的建立,就能更好關注其業務使用1. 簡單工廠模式:工廠模式又可以分為簡單工廠模式,工廠方法模式和抽象工廠模式。
public
inte***ce
computer
public
class
hwcomputer
implements
computer
}public
class
implements
computer
}
簡單工廠模式,靠乙個工廠類來管理物件的建立,可依據不同產品的特性來實現不同產品的建立。比如品牌branch
public
class
******compute***ctory
elseif(
.equals
(branch)
)else
}public
static
void
main
(string[
] args)
}
通過工廠類統一的方法2. 工廠方法模式:makecommputer
來管理具體產品的建立但它的問題也很突出,當需要生產別的品牌電腦時,還需要對工廠類進行修改,這不符合開閉原則(對擴充套件開放,對修改關閉)
這就衍生出了工廠方法模式
工廠方法模式與簡單工廠模式的區別在於產品的建立並非由工廠類來統一區分,而是由子工廠來管理建立。
//工廠核心方法
public
abstract
class
compute***ctory
//huawei電腦子工廠
public
class
hwcompute***ctory
extends
compute***ctory
}public
class
extends
compute***ctory
}public
class
compute***ctorytest
}
主要針對工廠方法來進行擴充套件子工廠3. 抽象工廠模式:這樣,每當由新的品牌電腦需要生產,只需要開闢乙個新的子工廠即可
工廠方法模式只生產乙個等級的產品,即擁有乙個工廠核心方法抽象工廠模式,是工廠方法模式的公升級,擁有多個核心方法,即可生成多個等級的產品
一台電腦擁有不同的cpu、gpu等元件,這些元件的生成可以統一由抽象工廠componentfactory來管理具體生產什麼配置的電腦,由具體工廠來實現
//抽象產品
public
inte***ce
cpu//具體產品cpu_i5
public
class
cpu_i5
implements
cpu}
//具體產品cpu_i7
public
class
cpu_i7
implements
cpu}
//抽象產品
public
inte***ce
gpu//具體產品gpu_amd
public
class
gpu_amd
implements
gpu}
//具體產品gpu_nvidia
public
class
gpu_nvidia
implements
gpu}
//抽象工廠
public
inte***ce
componentfactory
//具體工廠lowcomposeplant
public
class
lowcomposeplant
implements
componentfactory
@override
public gpu makegpu()
}//具體工廠middlecomposeplant
public
class
middlecomposeplant
implements
componentfactory
@override
public gpu makegpu()
}
public
class
extends
compute***ctory
}
4. 工廠模式的作用:
【解耦】:不用關注例項是如何建立的,就能更好關注其業務使用
以上均為個人見解,歡迎討論
設計模式 1 單例模式概念要點及例子說明
0.要點 私有構造方法 本類中提供乙個靜態本類物件 對外提供乙個獲取例項的方法 1.雙重校驗的單例模式 該方式的單例模式是基於懶漢式的單例模式 雙重校驗能保證執行緒安全,且避免每次獲取物件都去synchronized加鎖,只有單例物件為null時才去加鎖建立例項物件 此外靜態物件要加volatile...
php設計模式工廠模式及單例模式
工廠模式 class example else 單例設計模式程式 final class superman 召喚超人的唯一方法 return superman static function call return self self 除錯用方法 return string function get...
設計模式 單例模式 工廠模式
1.單例設計模式 乙個類中只能有乙個物件 分為 懶漢單例模式和餓漢單例模式 懶漢單例模式 1.私有化構造器 2.宣告本類引用的型別,不要去指向物件 3.提供乙個公共靜態的方法,為外部提供物件,先判斷引用型別是否為物件,如果不是,則引用指 向乙個new 類名 並返回 如果有就返回這個引用 public...