工厂模式分为四种:
3 静态工厂
1、简单工厂模式
2、静态工厂模式
3、工厂方法模式
4、抽象工厂模式
一.简单工厂模式
用一个工厂类,来管理,通过传入的参数不同,各自生成不同的子类对象。
以发送信息为例,有多种发送方式,子类发送方式继承父类。通过一个工厂类来控制,不同参数传入返回不同的对象。
public class sender{
public void send(){}
}
public class SmsSender extends sender{
@override
public void send(){
System.out.println("短信发送")
}
}
public class MailSender extends sender{
@override
public void send(){
System.out.println("邮件发送")
}
}
public class Factory{
public sender sends(String type)
{
Sender sd= null;
if (type.equals("MS"))
{
sd= = new SmsSender ();
} else if (type.equals("mail"))
{
sd= = new MailSender ();
}
return sd;
}
}
2.工厂方法
和简单工厂类似,简单工厂传入参数容易出错。
public class Factory{
public sender Smssends()
{
return new SmsSender();
}
public sender Mailsends()
{
return new MailSender();
}
}
调用时 Sender s=new Factory.Smssends();
3 静态工厂
类似工厂方法 只是在方法修饰Static 方法,可以不创建类直接调用。我们的工具类 就是这样的。
4 抽象工厂
在前面的模式中,需要拓展程序必须对工厂类进行修改。违背闭包原则。
当要扩展程序时,创建一个新的工厂类,都是实现同一接口。
public class SmsFactory implements Provider{
@override
public sender produce()
{
return new SmsSender();
}
}
public class MaliFactory implements Provider{
@override
public sender produce()
{
return new MailSender();
}
}
Interface provider{ //这个其实就是终极工厂
public sender produce(){
public sender produce(){
}
}
}