參考博文: 侵權必刪
什麼是工廠模式:通過「物件建立」模式繞開new,來避免物件建立(new)過程中所導致的緊耦合(依賴具體類)。
適用性:使用new建立物件且導致緊耦合的場景。
思考:物件導向程式設計要以動態的思維去看待**。換句話說,在看**時需要時間概念,發現**在未來的穩定之處和變化之處。一般介面和抽象類是穩定的,而具體實現是變化的,這也是面向介面/抽象程式設計的原因,可以使**更加穩定。
先思考如下場景:目前只有一種producta,需要producta時,使用** producta pa = new producta()。如果未來需求變化,新增productb、productc等,會導致上述**是不穩定。因為producta pa = new producta() 這倆部分都依賴了具體實現。
將producta、productb、productc抽象出product,改寫**
productpa = new producta(),目前依然依賴nproducta
,工廠問題就是為了解決這種new依賴的問題。
一、簡單工廠模式
基本**:
package******factory;
public
abstract
class
produce
package******factory;
public
class producta extends
produce
}
package******factory;
public
class produvtb extends
produce
}
package******factory;
public
class
******facory
else
if(type.equals("b"))
else
return
null
; }
}
public二、工廠模式static
void
main(string args)
}
------------------工廠模式------------------------
factory f = new factorya(); //這裡使用new的方式代替,實際情況下應該根據需要傳入具體的工廠
produce p = f.getproduce(); //均依賴抽象
p.readme();
三、抽象工廠模式(可以認為抽象工廠模式是工廠模式的一般形式)
/*** 只能與產品a配套 */
public
class produce1 extends
producenumber
}
packageabstractfactory;
/*** 只能與產品b配套 */
public
class produce2 extends
producenumber
}
packageabstractfactory;
import
******factory.produce;
public
abstract
class
abstractfactory
packageabstractfactory;
import
******factory.produce;
import
******factory.producta;
public
class factorya1 extends
abstractfactory
@override
public
producenumber getproducenumber()
}
packageabstractfactory;
import
******factory.produce;
import
******factory.produvtb;
public
class factoryb2 extends
abstractfactory
@override
public
producenumber getproducenumber()
}
//--------------------抽象工廠模式-----------------------
// 有產品a和產品1配套,產品b和產品2配套。如果只用工廠模式需要4個具體工廠,且有可能出現產品不匹配的問題。
// 抽象工廠模式為建立一組相關或相互依賴的物件提供乙個介面,保證產品的配套問題,使得上述問題只要兩個工廠。
// 適用場合:多個需要配套的產品
abstractfactory f = new factorya1();//
這裡使用new的方式代替,實際情況下應該根據需要傳入具體的工廠
produce p =f.getproduce();
producenumber pn =f.getproducenumber();
p.readme();
pn.readme();
設計模式 工廠模式之簡單工廠
工廠模式可以分為 簡單工廠模式 普通工廠模式 靜態工廠模式 抽象工廠模式 簡單工廠模式 就是如何去例項化物件的問題,對於很容易變化的問題,應該考慮用乙個單獨的類來做這個創造例項的過程,這個單獨的類就是工廠 例子 通過簡單工廠建立各種圖形的實現過程 簡單工廠模式建立步驟 建立乙個介面 例 圖形介面 建...
設計模式 工廠模式之簡單工廠
我們常見的設計模式,大致可以分為三大類 建立型 結構性 行為型。工廠模式,屬於建立型。工廠模式到底起的是什麼作用呢?概括來說就是解耦。當某一類物件需要頻繁建立的時候,就會和程式產生比較大的耦合,在物件初始化屬性較多時,工廠模式可以較少這種耦合,這就是他的作用。一般情況下根據場景不同,工廠模式有幾種不...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...