设计模式之抽象工厂模式
工厂模式有一个缺点,就是延展性不好,如果想扩展工厂模式,就必须对Factory类进行修改,那么就会破坏了工厂模式的闭包。为了解决这个问题,抽象工厂模式就提了出来。抽象工厂模式的思想和工厂模式的思想类似,都是创建一个接口,然后去实现接口。
public interface Sender {
public void Send();
}
两个实现类:
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
}
}
public class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
两个工厂类:
public class SendMailFactory implements Provider {
@Override
public Sender produce(){
return new MailSender();
}
}
public class SendSmsFactory implements Provider{
@Override
public Sender produce() {
return new SmsSender();
}
}
在提供一个接口:
public interface Provider {
public Sender produce();
}
测试:
public class Test {
public static void main(String[] args) {
Provider provider = new SendMailFactory();
Sender sender = provider.produce();
sender.Send();
}
}