51,389
社区成员




public abstract class SenderFactory {
public abstract Sender createSender();
}
Email工厂类:
public class EmailSenderFactory extends SenderFactory {
@Override
public Sender createSender() {
return new EmailSender();
}
}
其他工厂类省略
产品是发送器,发送器抽象类:
public interface Sender {
void sendMsg(String msg);
}
Email发送器:
public class EmailSender implements Sender {
@Override
public void sendMsg(String msg) {
System.out.println("email send work:" + msg);
}
}
学生类:
public class Student {
public void sendMsg(SenderFactory factory, String msg) {
factory.createSender().sendMsg(msg);
}
}
客户端类:
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.sendMsg(new EmailSenderFactory(), "Java");
student.sendMsg(new SmsSenderFactory(), "C++");
}
}
客户端具体操作时还是面临选择哪个发送工厂的问题,与使用简单工厂模式时面临选择哪个Sender是一样的。
使用工厂方法有什么好处呢?