interface Factory {
public void produceWhat();
}
//被代理类
class PhoneFactory implements Factory {
@Override
public void produceWhat() {
System.out.println("生产手机");
}
}
//代理类
class proxyFactory implements Factory {
private Factory factory;
public proxyFactory(Factory factory) {
this.factory = factory;
}
@Override
public void produceWhat() {
System.out.println("生产手机前采购零部件");
factory.produceWhat();
System.out.println("手机生产完成");
}
}
public class staticProxyTest {
public static void main(String[] args) {
PhoneFactory phoneFactory = new PhoneFactory();
proxyFactory proxy = new proxyFactory(phoneFactory);
proxy.produceWhat();
}
}
运行结果:
生产手机前采购零部件
生产手机
手机生产完成
这里的关键是代理类内部定义一个私有的接口对象,然后代理类创建一个带该接口对象的构造方法。在main函数中,将实现了接口的类作为参数传入代理对象中,也就是多态性。