简介:工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
意义:工厂的目的是为了帮我们解决创建对象实例的问题,并且工厂能够隐藏类名及对象创建的细节,让我们无需关心对象的创建。提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。
缺点:如果产品类过多,要生成很多的工厂类。
public interface Provider { //接口
public Sender produce();
}
public class SendMailFactory implements Provider { //实现类1
@Override
public Sender produce(){
return new MailSender();
}
}
public class SendSmsFactory implements Provider{ //实现类2
@Override
public Sender produce() {
return new SmsSender();
}
}
public class Test { //调用工厂
public static void main(String[] args) {
Provider provider = new SendMailFactory();
Sender sender = provider.produce();
sender.Send();
}
}