package CreatorModel;
import java.lang.reflect.*;
import java.util.*;
public class CreatorModel {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Builder builder = new Builder();
builder.produceMailSender(10);
builder.produceSmsSender(10);
List<Sender> list=builder.ShowList();
for(int i=0;i<20;i++){
Sender demo=list.get(i);
demo.Send();
}
for(int i=0;i<20;i++){
try {
Method method=list.get(i).getClass().getDeclaredMethod("Send");
method.invoke(list.get(i));
} catch ( Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try{
Class c=Class.forName("CreatorModel.MailSender");
Method m1=c.getDeclaredMethod("test3",int.class,String.class);
m1.invoke(c.newInstance(), 2,"ok");
}catch(Exception e){
e.printStackTrace();
}
}
}
interface Sender {
public void Send();
}
class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mail sender!");
}
public void test1(String type){
System.out.println("hello world"+type);
}
public void test2(int type){
System.out.println("hello world"+type);
}
public void test3(int type1,String type){
System.out.println("hello world"+type1+" "+type);
}
}
class SmsSender implements Sender {
@Override
public void Send() {
System.out.println("this is sms sender!");
}
}
class Builder {
private List<Sender> list = new ArrayList<Sender>();
public void produceMailSender(int count){
for(int i=0; i<count; i++){
list.add(new MailSender());
}
}
public void produceSmsSender(int count){
for(int i=0; i<count; i++){
list.add(new SmsSender());
}
}
public List ShowList(){
return list;
}
}