public interface Factory {
public void say ();
public void produce ();
}
public class NiKeFactory implements Factory {
@Override
public void say () {
System.out.println("我开始生产耐克服装了。" );
}
@Override
public void produce () {
System.out.println("工厂生产耐克服装。" );
}
}
public class NikeProxyFactory implements Factory {
private NiKeFactory niKeFactory;
public NikeProxyFactory () {
this .niKeFactory = new NiKeFactory();
}
@Override
public void say () {
niKeFactory.say();
}
@Override
public void produce () {
niKeFactory.produce();
}
}
public class TestProxyFactory {
public static void main (String[] args) {
NikeProxyFactory factory = new NikeProxyFactory();
factory.say();
factory.produce();
}
}
public class TestProxyFactory1 {
public static void testProxy () {
Factory proxyInstance = (Factory) Proxy.newProxyInstance(NiKeFactory.class.getClassLoader(), NiKeFactory.class.getInterfaces(), new InvocationHandler() {
@Override
public Object invoke (Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(NiKeFactory.class.newInstance(), args);
}
});
proxyInstance.say();
proxyInstance.produce();
}
public static void main (String[] args) {
TestProxyFactory1.testProxy();
}
}