简单工厂模式就是建立一个工厂类,对实现同一个接口的类进行实例化。其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(); } }