(1)簡單工廠模式
1.核心
通過乙個工廠類來建立物件,通常是將要建立的物件的類名傳遞進去即可
本例模仿dota建立英雄,有乙個專門建立英雄的工廠類,每次建立只要傳入英雄名字即可。
英雄抽象類:
public inte***ce hero
英雄1:qop
public class qop implements hero
}
英雄2:bm
public class bm implements hero
}
工廠類:
public class herofactory
}
客戶端類:
public class client
}
4.使用場景
以jdbc為例,第一步載入資料庫連線驅動,forname(name)就根據name建立出是mysql還是oracle等的連線類。
5.缺點
如果增加新的型別,那麼就需要修改工廠類
(2)工廠模式
1.核心
每乙個產品都對應乙個具體工廠,各個具體工廠都實現同乙個工廠介面,這樣增加乙個產品就只用增加乙個具體工廠即可。
英雄類介面:
public inte***ce ihero
英雄1:qop
public class qop implements ihero
}
英雄2:bm
public class bm implements ihero
}
工廠類介面:
public inte***ce ifactory
生產qop的工廠:
public class qopfactory implements ifactory
}
生產bm的工廠
public class bmfactory implements ifactory
}
客戶端:
public class client
}}
4.優點
當需要增加乙個新的類的時候,只需要增加乙個工廠類,乙個具體類即可。
(3)抽象工廠模式
1.核心
每乙個工廠生產同乙個系列的產品,如有乙個生產寶馬汽車的工廠,生產多種型號的寶馬,不同型號的寶馬需要配置不同型號的空調,所以每乙個具體工廠既生產這種型號的寶馬,又生產這種汽車所配置的空調。
車和空調的介面類:
public inte***ce ibmw
車的抽象類:
public abstract class bmw implements ibmw
空調的抽象類:
public abstract class airofbmw implements ibmw
寶馬520車:
public class bmw520 extends bmw
}
寶馬521車:
public class bmw521 extends bmw
}
寶馬520的空調
public class air520 extends airofbmw
}
寶馬521的空調
public class air521 extends airofbmw
}
生產寶馬車和空調的工廠的介面:
public inte***ce ifactory
生產寶馬520和他的配套空調的工廠
public class bmw520factory implements ifactory
@override
public airofbmw createair()
}
生產寶馬521和他的配套空調的工廠
public class bmw521factory implements ifactory
@override
public airofbmw createair()
}
客戶端:
public class client
if(bmw != null)
bmw.showname();
if(air != null)
air.showname();
}}
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...