package com.example.designmodel;
public class Senders {
public interface Sender {
void send();
}
public class MailSender implements Sender{
@Override
public void send() {
System.out.println("send mail");
}
}
public class SmsSender implements Sender{
@Override
public void send() {
System.out.println("send sms");
}
}
}
package com.example.designmodel;
/**
* 工厂模式 - 抽象工厂
*/
public class FactoryModel {
Senders senders = new Senders();
/**
* 抽象提供者
*/
public interface Provider{
Senders.Sender produce();
}
/**
* 邮件工厂
*/
public class MailFactory implements Provider{
@Override
public Senders.Sender produce() {
//短信工厂直接使用邮件接口
return senders.new MailSender();
}
}
/**
* 短消息工厂
*/
public class SmsFactory implements Provider{
@Override
public Senders.Sender produce() {
//短信工厂直接使用短信接口
return senders.new SmsSender();
}
}
public static void main(String[] args){
FactoryModel factoryModel = new FactoryModel();
Provider provider = factoryModel.new MailFactory();
provider.produce().send();
}
}