2.2.2 普通工厂模式
(1)基本概念
普通工厂方法模式就是建立一个工厂类,对实现了同一接口的不同实现类进行实例的创建。
(2)类图结构
(3)主要缺点
在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,并且可能出现空指针异常。
(4)代码演示
//接口
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 produce(String type){
if ("mail".equals(type)) {
return new MailSender();
}
if ("sms".equals(type)) {
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"); 传递的字符串出错会引发空指针异常
//3.使用对象调用方法模拟发送行为
sender.send(); //正在发送邮件
System.out.println("----------------------------");
//优点:代码简单,可读性好 在创建单个对象时有优势
//缺点:扩展性和可维护性差
Sender sender1=new MailSender();
sender1.send();