工厂模式分为三种:
1、简单工厂模式,就是创建一个工厂类,对实现了同一接口的一些类进行实例的创建。
2、多个工厂模式,就是在普通工厂方法中,若传递的字符串出错,则不能创建对象,而多个工厂模式就是提供多个工厂方法分别创建对象。
3、静态工厂模式,将多个工厂模式里的方法设置为静态的,不需要创建实例直接调用即可。
概述:
凡是出现大量的产品需要创建并且具有共同的接口时,可由工厂方法创建。
代码描述:(以发送邮件和发送短信为类)
实现接口:
package com.design.model.factorymodel;
public interface Send
{
public void send();
}
邮件发送类:
package com.design.model.factorymodel;
public class MailSend implements Send
{
@Override
public void send()
{
System.out.println("MailSender");
}
}
短信发送类:
package com.design.model.factorymodel;
public class SmsSend implements Send
{
@Override
public void send()
{
System.out.println("sms send");
}
}
工厂类创建:
package com.design.model.factorymodel;
public class SendFactory
{
//单个工厂模式
public Send producer(String type){
if(type.equals("mail")){
return new MailSend(); //创建实例
}else if (type.equals("sms")) {
return new SmsSend(); //创建实例
}else {
return null; //字符串不同时,不能创建对象
}
}
//多个工厂模式
public Send produceMail(){
return new MailSend();
}
public Send produceSms(){
return new SmsSend();
}
//静态工厂模式
public static Send sproduceMail(){
return new MailSend();
}
public static Send sproduceSms(){
return new SmsSend();
}
}
测试样例:
package com.design.model.factorymodel;
public class FactoryTest
{
public static void main(String[] args)
{
//简单工厂测试
SendFactory sendFactory = new SendFactory();
Send send = sendFactory.producer("mail");
send.send();
//多个工厂测试
SendFactory sendFactorymore = new SendFactory();
sendFactorymore.produceMail().send();
//静态工厂测试
SendFactory.sproduceMail().send();
}
}
运行结果:
MailSender
MailSender
MailSender
后续说明:待补~