1、工廠方法模式(Factory Method)
工廠方法模式分為三種:
11、普通工廠模式,就是建立一個工廠類,對實作了同一接口的一些類進行執行個體的建立。
舉例如下:(我們舉一個發送郵件和短信的例子)
首先,建立二者的共同接口:
[java] view plaincopy
public interface Sender {
public void Send();
}
其次,建立實作類:
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
public class SmsSender implements Sender {
System.out.println("this is sms sender!");
最後,建工廠類:
public class SendFactory {
public Sender produce(String type) {
if ("mail".equals(type)) {
return new MailSender();
} else if ("sms".equals(type)) {
return new SmsSender();
} else {
System.out.println("請輸入正确的類型!");
return null;
我們來測試下:
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produce("sms");
sender.Send();
輸出:this is sms sender!
22、多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字元串出錯,則不能正确建立對象,而多個工廠方法模式是提供多個工廠方法,分别建立對象。
将上面的代碼做下修改,改動下SendFactory類就行,如下:
[java] view plaincopypublic class SendFactory {
public Sender produceMail(){
public Sender produceSms(){
測試類如下:
Sender sender = factory.produceMail();
輸出:this is mailsender!
33、靜态工廠方法模式,将上面的多個工廠方法模式裡的方法置為靜态的,不需要建立執行個體,直接調用即可。
public static Sender produceMail(){
public static Sender produceSms(){
Sender sender = SendFactory.produceMail();
總體來說,工廠模式适合:凡是出現了大量的産品需要建立,并且具有共同的接口時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字元串有誤,不能正确建立對象,第三種相對于第二種,不需要執行個體化工廠類,是以,大多數情況下,我們會選用第三種——靜态工廠方法模式。