簡單工廠模式就是建立一個工廠類,對實現同一個接口的類進行實例化。其UML圖以下:java
package com.hs.pattern.factory; public interface Sender { public void send(); } package com.hs.pattern.factory; public class SmsSender implements Sender{ @Override public void send() { System.out.println("短信發送"); } } package com.hs.pattern.factory; public class MailSender implements Sender { @Override public void send() { System.out.println("郵件發送"); } }
package com.hs.pattern.factory; /** * 簡單工廠模式 * @author Administrator * */ public class SimpleSenderFactory { public static Sender produce( String sendType ){ if( ("sms").equals(sendType) ){ return new SmsSender(); }else if ( ("mail").equals(sendType) ) { return new MailSender(); } return null; } }
在工廠方法模式中,定義了一個用於建立對象的工廠接口,並根據工廠接口的實現類來肯定要實現哪一個產品。首先來看一下UML圖:ide
工廠方法由四部分構成:spa
產品接口(Sender):用來定義產品的功能,工廠生產的全部產品對象都要實現該接口,調用者通常跟產品接口打交道。code
具體產品類(SmeSender、MailSender):實現了產品接口的類,是產品的具體實現細節。對象
工廠接口(Factory):工廠接口是工廠方法模式的核心接口,調用者直接與工廠接口交互,用於獲取具體的產品實現類。blog
具體工廠類(SmsFactory、MailFactory):具體工廠類是工廠接口的實現類,用來實例化產品對象,不一樣的具體工廠類會根據需求實例化不一樣的產品實現類。接口
package com.hs.pattern.factory; public interface Factory { public Sender produce(); } package com.hs.pattern.factory; public class SmsFactory implements Factory { @Override public Sender produce() { return new SmsSender(); } } package com.hs.pattern.factory; public class MailFactory implements Factory { @Override public Sender produce() { return new MailSender(); } }