設計模式——1工廠方法模式(FactoryMethod)
1、工廠方法模式(Factory Method)
工廠方法模式分為三種:
11、普通工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。
舉例如下:(我們舉一個傳送郵件和簡訊的例子)
首先,建立二者的共同介面:
[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!
22、多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。
將上面的程式碼做下修改,改動下SendFactory類就行,如下:
[java] view plaincopypublic 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!
33、靜態工廠方法模式,將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。
[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!
總體來說,工廠模式適合:凡是出現了大量的產品需要建立,並且具有共同的介面時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字串有誤,不能正確建立物件,第三種相對於第二種,不需要例項化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。
相關文章
- 設計模式之-工廠方法-FactoryMethod設計模式
- 工廠方法模式(FactoryMethod)模式
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 設計模式之工廠方法模式|抽象工廠模式設計模式抽象
- 設計模式 - 工廠方法模式設計模式
- 設計模式-工廠方法模式設計模式
- 設計模式~~~工廠方法模式設計模式
- 設計模式——工廠方法模式設計模式
- 【設計模式】工廠方法模式設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 前端設計模式(1)--工廠模式前端設計模式
- java設計模式-工廠方法模式Java設計模式
- 設計模式之工廠方法模式設計模式
- Java設計模式(工廠方法設計模式)Java設計模式
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- Java 設計模式之工廠方法模式與抽象工廠模式Java設計模式抽象
- 工廠方法--設計模式設計模式
- 設計模式(三)抽象工廠方法模式設計模式抽象
- python設計模式-工廠方法模式Python設計模式
- Java設計模式之工廠方法模式Java設計模式
- golang設計模式之工廠方法模式Golang設計模式
- 設計模式筆記---工廠方法模式設計模式筆記
- Java設計模式(二):工廠方法模式Java設計模式
- 設計模式系列之「工廠方法模式」設計模式
- 【大話設計模式】—— 工廠方法模式設計模式
- Java設計模式3:工廠方法模式Java設計模式
- 設計模式之工廠方法設計模式
- 設計模式學習(二)工廠模式——工廠方法模式+登錄檔設計模式
- 無廢話設計模式(1)--簡單工廠、工廠方法、抽象工廠設計模式抽象
- 工廠方法模式GoF23種設計模式之建立型模式之工廠方法模式Go設計模式
- 【設計模式】工廠模式設計模式
- 設計模式 —— 工廠模式設計模式
- 設計模式-工廠模式設計模式
- 設計模式(工廠模式)設計模式
- 設計模式——工廠模式設計模式
- 設計模式----工廠模式設計模式
- 設計模式----工廠設計模式設計模式