package p187;
import util.Util;
interface Service{
void methon1();
void methon2();
}
interface ServiceFactory{
Service[] getService();
}
class Implement1 implements Service{
@Override
public void methon1() {
Util.println("this is Implement1 methon1");
}
@Override
public void methon2() {
Util.println("this is Implement1 methon2");
}
}
class Implement2 implements Service{
@Override
public void methon1() {
Util.println("this is Implement2 methon1");
}
@Override
public void methon2() {
Util.println("this is Implement2 methon2");
}
}
class ImplementFactory implements ServiceFactory{
@Override
public Service[] getService() {
Service[] ss={new Implement1(),new Implement2()};
return ss;
}
}
public class Factories {
public static void gen(ServiceFactory sf){
Service[] s=sf.getService();
for(int i=0;i<s.length;i++){
s[i].methon1();
s[i].methon2();
}
}
public static void main(String[] args){
gen(new ImplementFactory());
}
}
由于我对工厂模式还不是很理解,但是通过上诉代码可以大概理解到,原本要实现的是类,但是我们在做的时候却只是实现了接口。也就是只要类C实现了某个接口I,凡是调动I的方法都将C可以作为参数传入。因为我们在实现某个接口的是是生成的这个接口的某个具体实现类。