邮差
public interface Sender {
/**
* 发送信息
*/
public void send();
}
邮件发送
package abstract_factory;
public class EmailSender implements Sender{
@Override
public void send() {
System.out.println("通过电子邮件发送");
}
}
短息发送
public class SmsSender implements Sender{
@Override
public void send() {
System.out.println("通过短信发送");
}
}
以上是产品
抽象工厂
/**
* 抽象工厂
*/
public interface AbstractFactory {
public Sender produce();
}
邮件工厂
/**
* 邮件工厂
*/
public class EmailSendFactory implements AbstractFactory {
@Override
public Sender produce() {
return new EmailSender();
}
}
短信工厂
/**
* 短信工厂
*/
public class SmsSendFactory implements AbstractFactory {
@Override
public Sender produce() {
return new SmsSender();
}
}
测试类
@Test
public void EmailTest() {
// 创建邮件工厂
AbstractFactory factory = new EmailSendFactory();
// 生产产品
Sender sender = factory.produce();
// 执行业务
sender.send();
}
@Test
public void smsTest() {
// 创建短信工厂
AbstractFactory factory = new SmsSendFactory();
// 生产产品
Sender sender = factory.produce();
// 执行业务
sender.send();
}
}
如果想再添加一个用车马发送消息的邮差,只需要添加一个车马类,实现 Sender 接口,然后在创建一个生产车马的工厂类,实现AbstractFactory接口就可以了,无需修改现有代码。











网友评论