Java編程23種設計模式之普通工廠模式

1、工廠方法模式(Factory Method)
工廠方法模式分爲三種:
1.1、普通工廠模式,就是建立一個工廠類,對實現了同一接口的一些類進行實例的創建。
舉例如下:(我們舉一個推送信息的例子)
創建推送接口
public interface InfoSender {
//創建推送接口
public void send();
}
創建各種推送實現類:
=======郵箱推送
public class MailSend implements InfoSender {
// 郵箱推送
@Override
public void send() {
System.out.println("mail send");
}

}
====短信推送
public class SMSSend implements InfoSender {
// 短信推送
@Override
public void send() {
System.out.println("sms send");
}

}
===終端推送或是客戶端推送
public class PushInfo implements InfoSender {
//終端推送
@Override
public void send() {

System.out.println("推送信息");
}

}
建信息推送工廠類
public class PushInfoFactory {
public InfoSender productPushInfo(String type) {
//根據不同類型生產不同信息推送方式
if("mail".equals(type))
{
return new MailSend();
}
else if("push".equals(type))
{
return new PushInfo();
}
else if("sms".equals(type))
{
return new SMSSend();
}
else
return null;
}
}
測試一下吧
public class FactoryTest {

public static void main(String[] args) {
// 創建工程
PushInfoFactory factory = new PushInfoFactory();
// 生產消息推送方法
InfoSender push = factory.productPushInfo("push");
// 推送
push.send();
}

}
1.2、多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字符串出錯,則不能正確創建對象,而多個工廠方法模式是提供多個工廠方法,分別創建對象
在PushInfoFactory 類中增加如下方法:
// 創建mail類型的信息推送方式
public InfoSender productMail() {
return new MailSend();
}

// 創建SMS類型的信息推送方式
public InfoSender productSMS() {
return new SMSSend();
}

// 創建Push類型的信息推送方式
public InfoSender ProductPush() {
return new PushInfo();
}
在FactoryTest 類中增加如下代碼進行測試
// 創建mail工廠方法
InfoSender push2 = factory.productMail();
// 推送
push2.send();
1.3靜態工廠方法模式,將多個工廠方法裏的方法置爲靜態的,不需要創建實例,直接調用即可。
// 創建mail類型的信息推送方式
public static InfoSender productMail() {
return new MailSend();
}

// 創建SMS類型的信息推送方式
public static InfoSender productSMS() {
return new SMSSend();
}

// 創建Push類型的信息推送方式
public static InfoSender ProductPush() {
return new PushInfo();
}
在以上的三種模式中,第一種如果傳入的字符串有誤,不能正確創建對象,第三種相對於第二種,不需要實例化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章