設計模式—工廠模式
阿新 • • 發佈:2017-05-27
pro java pla 靜態工廠方法 靜態工廠模式 -i bsp sse src java中的23中設計模式
1. 工廠模式
工廠模式分為三種
(1.)普通工廠模式
普通工廠模式,就是建立一個工廠類,對實現了同一個接口的一些類進行實例的創建。
普通工廠模式關系圖
以下舉例:(我們舉一個發送郵件和短信的例子)
首先,創建二者的共同接口:
[java] view plaincopy
public interface Sender {
public void Send();
}
其次,創建實現類:
[java] view plaincopy
實現類一
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
}
}
[java] view plaincopy
實現類二
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
最後,建工廠類:
[java] view plaincopy
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!
(2.) 多個工廠模式
多個工廠模式,是對普通工廠方法的改進,在普通工廠模式中,如果字符串傳遞出錯,則不能正
確創建對象,而多個工廠模式是提供多個工廠方法,分別創建對象。
多個工廠模式關系圖
多個工廠模式我們只需要將SnedFactory這個類修改就行, 如下:
[java] view plaincopy
多個工廠模式創建如下:
public class SendFactory {
郵件發送工廠者模式
public Sender produceMail(){
return new MailSender();
}
郵件發送方工廠者模式
public Sender produceSms(){
return new SmsSender();
}
}
測試類如下:
[java] view plaincopy
public class FactoryTest {
public static void main(String[] args) {
SendFactory factory = new SendFactory();
Sender sender = factory.produceMail();
sender.Send();
}
}
輸出:this is mailsender!
(3.)靜態工廠方法模式
靜態工廠方法模式,將上面的多個工廠方法模式設置為靜態的,不需要創建實例直接調用即可。
靜態多個工廠模式我們只需要將SnedFactory這個類修改就行, 如下:
[java] view plaincopy
public class SendFactory {
// 設置為靜態
public static Sender produceMail(){
return new MailSender();
}
public static Sender produceSms(){
return new SmsSender();
}
}
[java] view plaincopy
public class FactoryTest {
public static void main(String[] args) {
Sender sender = SendFactory.produceMail();
sender.Send();
}
}
輸出:this is mailsender
總體來說,工廠模式適合:凡是出現大量的產品需要創建,並且有共同的接口時,可以通過工廠方法
模式進行創建。在以上的三種模式中,第一種如果傳入字符集有誤,不能正確創建對象,第三種相對
於第二種,不需要實例化工廠,所以大多數情況下,我們會選擇用第三種工廠模式—-靜態工廠模式。
設計模式—工廠模式