2.2.3 多个工厂方法模式
(1)类图结构
(2)主要缺点
在多个工厂方法模式中,为了能够正确创建对象,先需要创建工厂类的对象才能调用工厂类中的生产方法。
(3)代码演示
//接口
public interface Sender {
//自定义方法描述发送的行为
void send();
}
//实现接口一
package demo02;
public class MailSender implements Sender{
@Override
public void send() {
System.out.println("正在发送邮件...");
}
}
//实现接口二
package demo02;
public class SmsSender implements Sender{
@Override
public void send() {
System.out.println("正在发送短信...");
}
}
//工厂类
public class SendFactory {
public Sender produceMail() {
return new MailSender();
}
public Sender produceSms() {
return new SmsSender();
}
return null;
}
//测试类
public class SendFactoryTest {
public static void main(String[] args) {
//缺点:代码复杂,可读性差
//优点:扩展性和可维护性好 尤其在创建大量对象的前提下
//1.声明SendFactory类型的引用指向SendFactory类型的对象
// SendFactory sf=new SendFactory();
//2.调用生产方法来实现对象的创建
// Sender sender = sf.produce("mail");
// Sender sender = sf.produce("maill"); 传递的字符串出错会引发空指针异常
Sender sender=sf.produceMail();
//3.使用对象调用方法模拟发送行为
sender.send(); //正在发送邮件
System.out.println("----------------------------");
//优点:代码简单,可读性好 在创建单个对象时有优势
//缺点:扩展性和可维护性差
Sender sender1=new MailSender();
sender1.send();