interface Sender {
void Send();
}
interface Provider {
Sender produce();
}
class JustinSender implements Sender {
@Override
public void Send() {
System.out.println(“Justin has gone,never come back”);
}
}
class MailSender implements Sender {
@Override
public void Send() {
System.out.println(“this is mailsender!”);
}
}
class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
class sendMailFactory implements Provider {
@Override
public Sender produce() {
return new MailSender();
}
}
class sendSmsFactory implements Provider {
@Override
public Sender produce() {
return new SmsSender();
}
}
class sendJustinFactory implements Provider {
public Sender produce() {
return new JustinSender();
}
}
public class test {
public static void main(String[] args) {
Provider provider = new sendMailFactory();
Sender sender = provider.produce();
sender.Send();
Provider provider1 = new sendJustinFactory();
Sender sender1 = provider1.produce();
sender1.Send();
Provider provider2 = new sendSmsFactory();
Sender sender2 = provider2.produce();
sender2.Send();
}
}