工廠模式的概念:(整個例子全部以女媧造人爲例子,生動形象,再不懂那。。。)
工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。
在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,並且是通過使用一個共同的接口來指向新創建的對象。
工廠模式的分類:
設計模式系列——三個工廠模式(簡單工廠模式,工廠方法模式,抽象工廠模式);
簡單工廠模式
簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
創建的思路:
1,創建工廠接口,定義需要做的事情,
2,創建實體類,用於後邊得到實體類對象,也就是產品的對象
3,實現工廠接口,在接口中,通過工廠判斷出需要生產的對象,返回對象即可。
這裏以生產人類爲例子:
工廠接口:
public interface IPersonFactory{
Person BulidPerson(String type);
}
創建人類接口,當然可以不創建用object代替:
public interface Person{
}
男人和女人實體類:
public class Man extends Person{
}
public class Woman extands Person{
}
創建工廠實現類:通過不同的類型產生不同的人類
public class Factory implement IpersonFactory{
@overrid
public Person BuildPerson(String type){
if(type.equal("男人")){
return new Man();
}else if(type.equal("女人")){
return new Woman();
}
}
}
調用時::利用了多態的特點
創建工廠類:
Fatory factory=new Factory();
//返回男人對象
Person person=factory.BuildPerson("男人");
//返回女人對象
Person person=factory.BuildPerson("女人");
工廠方法模式
工廠方法模式其實非常的簡單,怎麼理解呢?就是和簡單工廠模式差不多,簡單工廠模式時同一個工廠根據你輸入的類型返回不同的人類,而工廠方法模式是通過不同的對象而創建出不同的工廠,單獨生產,也就是說,創建不同的工廠生產不同的商品
步驟:
1創建工廠接口
2創建不同的工廠
3創建不同實體類
4,在不同的工廠中生產不同的實體類對象
工廠接口:
public interface IPersonFactory{
Person BulidPerson();
}
創建人類接口,當然可以不創建用object代替:
public interface Person{
}
男人和女人實體類:
public class Man extends Person{
}
public class Woman extands Person{
}
創建不同的工廠分別生產男人和女人
public class ManFactory implement IPersonFactory{
@overrid
public Person BuildPerson(){
return new Man();
}
public class WomanFactory implement IPersonFactory{
@overrid
public Person BuildPerson(){
return new Woman();
}
調用的時候創建不同的工廠直接調用方法造人:
生產男人
ManFactory MF=new ManFactory();
Person Pman=MF.BuildPerson();
生產女人
WomanFactory WF=new WomanFactory();
Person Pwoman=WF.BulidPerson();
抽象工廠模式
也是所有的工廠模式中結合,可能對於新人而言有難度,但是看完我的例子你就不會迷茫了。。。。。
這裏先簡單的說兩個刺詞:“產品族”,“產品等級”;
什麼是產品族?產品族就是某一種類型的產品,
什麼是產品等及?產品等級就是在某一產品族的內部分了不同的等級,或者是不同的包裝
這裏我先舉個例子:女媧創造了三種人,黑白黃,這三個人種就是三個產品族,這裏你懂了吧?每一個人種中又有男人和女人,或者大人和小孩,這就可以認爲是不同的產品等級,我想現在的你應該有這個概念了。
那麼在抽象工廠模式中,應該如何創建相應的步驟來完成設計呢???
步驟,:::需求,創建不同人種的男人或者女人
1創建抽象工廠:(抽離出三個人種)
2,創建工廠的實體類,以性別劃分
3,創建抽象人類(抽離出相同的屬性)
4,創建抽象男人女人類
5,創建男人女人的實體類
下面開始:抽象人類工廠
public abstract PersonFactory{
//生產三個人種
void BulidBllackPerson();
voidildWidtePerson();
void BuildYellowPerson();
}
//創建抽象人類
public abstract class Person{
人類共同的功能
void eat();
void sleep();
}
創建三個人種抽象類
public abstract classWidtePerson() extands Person{
}
public abstract class BlackPerson() extands Person{
}
public abstract class YelloPerson() extands Person{
}
創建三個人種的男人女人實體類。實現方法,這裏我不寫了,太多了,純手工scdn打的,沒用編輯器
public class BlackMan extands Blaockerson{
}
public class BlackWoman extands BlackPerson{
}
public class WidteMan extands WidtePerson{
}
public class Widte WoMan extanceWidtePerson{
}
public class YellwMan extands YelloPerson{
}
public class YelloWoman extands YellwPerson{
}
以性別爲等級劃分創建工廠的實現類
public class WomanFactory impement PersonFactory{
創建三個人種的男性
public voidBuildBackPerson(){
return new BlackWoman();
}
public void BuildWidtePerson(){
return new WidteWoman();
}
public void BuildYellowPerson(){
return hew YellowWoman();
}
}
public class ManFactory impement PersonFactory{
創建三個人種的男性
public voidBuildBackPerson(){
return new BlackMan();
}
public void BuildWidtePerson(){
return new WidteMan();
}
public void BuildYellowPerson(){
return hew YellowMan();
}
}