Object Dynamic proxies (一) 对象动态代理

时间:2022-04-28 16:07:41

new Manufacturer():比如说,生产商生产瓷砖这个对象,自己不对外卖,让代理商去卖瓷砖。


生产瓷砖的人:生产商

代理瓷砖的人:代理商

下面主要:1、定义一个接口(做的事情,可以卖瓷砖这件事)

                2、 生产商 这个对象 实现 接口

                3、代理商  实现 接口

       生产商只管生产,只好找多个代理商来卖瓷砖,

       简单的很,直接把生产商的对象传给代理商就行了,

      当代理商执行操作时,利用多态原理,其实就是生产商在操作。

package ftypeinfo;

import static net.mindview.util.Print.*;

interface InterfaceSell{
void doSell();
void somethingElse(String arg);
}

class manufacturer  implements InterfaceSell{
@Override
public void doSell() {
// TODO Auto-generated method stub
print("do something");
}


@Override
public void somethingElse(String arg) {
// TODO Auto-generated method stub
print("somethingElse"+arg);
}
}
 class SellProxy implements InterfaceSell{
  private InterfaceSell proxied;// 传入了真正的实例
  public SellProxy(InterfaceSell proxied)
  {this.proxied=proxied;}
  
@Override
public void doSell() {
// TODO Auto-generated method stub
print("SimpleProxyDemo doSometing");
proxied.doSell();
}
@Override
public void somethingElse(String arg) {
// TODO Auto-generated method stub
print("SimpleProxyDemo doSometing"+arg);
proxied.somethingElse(arg);
}
 }
 public class SimpleProxyDemo
  {  
public static void cosumer(InterfaceSell iface)
{
iface.doSell();
iface.somethingElse("bonobo");
}    
public static void main(String[] args) {
// TODO Auto-generated method stub
cosumer(new manufacturer());
cosumer(new SellProxy(new manufacturer()));
}
}