設計模式 工廠模式

2021-08-20 16:32:45 字數 3232 閱讀 3446

在基類中定義建立物件的乙個介面,讓子類決定例項化哪個類。工廠方法讓乙個類的例項化延遲到子類中進行。
public inte***ce shape

public class circle implements shape 

@override

public void draw()

}

長方形

public class rectangle implements shape 

@override

public void draw()

}

正方形

public class square implements shape 

@override

public void draw()

}

public class shapefactory

if(shapetype.equalsignorecase("circle"))else if(shapetype.equalsignorecase("rectangle"))else if(shapetype.equalsignorecase("square"))

return null;

}}

public class test 

}

circle

draw circle

rectangle

draw rectangle

square

draw square

package factory_pattern;

/** * 利用反射解決簡單工廠每次增加新了產品類都要修改產品工廠的弊端

* * @author administrator

* */

public class shapefactory2 catch (classnotfoundexception e) catch (instantiationexception e) catch (illegalacces***ception e)

return obj;

}}

package factory_pattern;

public class test2

}

抽象工廠(abstract factory)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠(concrete factory)角色 :這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立某一種產品物件。

抽象產品(abstractproduct)角色 :工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

具體產品(concrete product)角色 :這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,它們之間往往一一對應

public inte***ce factory

圓形工廠類

public class circlefactory implements factory

}長方形工廠類

public class rectanglefactory implements factory

}方形工廠類

public class squarefactory implements factory

}

public class test 

}

circle

draw circle

抽象工廠(abstractfactory)角色 :是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。

具體工廠類(conretefactory)角色 :這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立某一種產品物件。

抽象產品(abstract product)角色 :工廠方法模式所建立的物件的超型別,也就是產品物件的共同父類或共同擁有的介面。

具體產品(concrete product)角色 :抽象工廠模式所建立的任何產品物件都是某乙個具體產品類的例項。在抽象工廠中建立的產品屬於同一產品族,這不同於工廠模式中的工廠只建立單一產品,我後面也會詳解介紹到。

public inte***ce gun

子彈public inte***ce bullet

ak類

public class ak implements gun

}m4a1類

public class m4a1 implements gun

}ak子彈類

public class ak_bullet implements bullet

}m4a1子彈類

public class m4a1_bullet implements bullet

}

public inte***ce factory

生產ak和ak子彈的工廠

public class ak_factory implements factory

@override

public bullet producebullet()

}生產m4a1和m4a1子彈的工廠

public class m4a1_factory implements factory

@override

public bullet producebullet()

}

public class test 

}

load bullets with ak

shooting with ak

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...