工廠模式,常用的設計模式(創建型模式)及分類

工廠模式的概念:(整個例子全部以女媧造人爲例子,生動形象,再不懂那。。。)

工廠模式(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();

}


}












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章