抽象工厂模式:创建多个工厂类,一旦要增加新的功能,就直接增加新的工厂类,不需要修改之前的代码,不会违反闭包原则。
代码详细说明:
一个接口(实现类的接口):
public interface Sender{
public void Send();
}
两个实现类:
public class MailSender implements Sender{
public void Send(){
System.out.println("this is MailSender");
}
}
public class SmsSender implements Sender{
public void Send(){
System.out.println("this is SmsSender");
}
}
一个工厂类的接口:
public interface Provider{
public Sender produce();
}
两个工厂类:
public class SendMailProvider implements Provider{
public Sender produce(){
return new MailSender();
}
}
public class SendSmsProvider implements Provider{
public Sender produce(){
return new SmsSender();
}
}
测试类:
public class AbstractFactoryTest{
public Static void main(String[] args){
Provider pro = new SendMailProvider();
Sender sd = pro.produce();
sd.Send();
}
}
输出:this is MailSender
优点:拓展性好。如果你想增加一个即时通讯的类,你只需要增加一个实现类,实现Sender接口,增加一个工厂类,实现Provider接口,不需要改动现在的代码。