普通工厂模式

描述

我们不需要去关注对象的实例化,只需要给工厂类对应的字符串,让工厂类返回给我们对象就行了

image.png

也可以看看菜鸟教程画的图:(还是别人的香)
image.png

Factory factory = new Factory();
Sender sender = factory.product("mail");
sender.send();

多工厂模式

描述

多个工厂方法模式,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。

不多说直接看代码:

//普通工厂模式
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 SendFactory {

	public Sender produceMail() {
		return new MailSender();
	}
	
	public Sender produceSMS() {
		return new SmsSender();
	}
}

静态工厂模式

描述

将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

public class SendFactory {

	public static Sender produceMail() {
		return new MailSender();
	}
	
	public static Sender produceSMS() {
		return new SmsSender();
	}
}