设计模式之JAVA----工厂模式
Posted hongshu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之JAVA----工厂模式相关的知识,希望对你有一定的参考价值。
普通工厂模式
定义:建立一个工厂类,对实现了同一接口的一些类进行实例的创建
1、创建接口
package com.hongshu.factory.ordinary.dao;
/**
* Description: 发送接口
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 上午11:14:17
*/
public interface Sender
public void send();
2、接口实现
package com.hongshu.factory.ordinary.dao;
/**
* Description:发送接口实现
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 上午11:16:11
*/
public class MailSender implements Sender
@Override
public void send()
System.out.println("mial have successed!");
package com.hongshu.factory.ordinary.dao;
/**
* Description:
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 上午11:17:09
*/
public class SmsSender implements Sender
@Override
public void send()
System.out.println("Sms have successed");
3、创建工厂方法
package com.hongshu.factory.ordinary;
import com.hongshu.factory.ordinary.dao.MailSender;
import com.hongshu.factory.ordinary.dao.Sender;
import com.hongshu.factory.ordinary.dao.SmsSender;
/**
* Description: 普通工厂模式
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 上午11:12:46
*/
public class OrdinaryFactory
public Sender produce(String type)
if("mail".equalsIgnoreCase(type)) return new MailSender();
else if("sms".equalsIgnoreCase(type)) return new SmsSender();
else
System.out.println("没有对应的工厂实现类");
return null;
4、测试
package com.hongshu.factory.ordinary;
import com.hongshu.factory.ordinary.dao.Sender;
/**
* Description:
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 上午11:21:47
*/
public class Test
public static void main(String[] args)
OrdinaryFactory factory = new OrdinaryFactory();
Sender sender = factory.produce("sms");
sender.send();
sender = factory.produce("mail");
sender.send();
多个工厂方法模式
定义:是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象
创建工厂类
package com.hongshu.factory.more;
import com.hongshu.factory.ordinary.dao.MailSender;
import com.hongshu.factory.ordinary.dao.Sender;
import com.hongshu.factory.ordinary.dao.SmsSender;
/**
* Description:多个工厂方法模式
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 下午1:38:55
*/
public class MoreFactory
public Sender produceMail()
return new MailSender();
public Sender produceSms()
return new SmsSender();
测试方法省略,如同普通工厂方法
静态工厂方法模式
定义:将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可
创建工厂类
package com.hongshu.factory.staticf;
import com.hongshu.factory.ordinary.dao.MailSender;
import com.hongshu.factory.ordinary.dao.Sender;
import com.hongshu.factory.ordinary.dao.SmsSender;
/**
* Description:静态工厂方法
* @since
* @author HongShu
* @version 1.0.0
* 2014年7月30日 下午1:43:44
*/
public class StaticFactory
public static Sender produceMail()
return new MailSender();
public static Sender produceSms()
return new SmsSender();
测试类如同普通工厂类
总结
总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种——静态工厂方法模式。
以上是关于设计模式之JAVA----工厂模式的主要内容,如果未能解决你的问题,请参考以下文章