wangflood

精心维护一个技术blog,为了工作,也是爱好。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  14 Posts :: 19 Stories :: 8 Comments :: 0 Trackbacks
在框架里,看到一段动态代理的混乱设计。可能后期会改的。中午要睡了,先贴出来,以后有时间再分析更改注释.

public interface Bird {

    
public void fly();
    
public void song();
}

public class TinyBird implements Bird {

    
private static final TinyBird instance = new TinyBird();

    
static final TinyBird getDefault() {
        
return instance;
    }

    @Override
    
public void fly() {
        System.out.println(
"bird flying .");

    }

    @Override
    
public void song() {
        System.out.println(
"bird songing .");

    }

}


public class BirdHandler implements InvocationHandler {

    
private Object deledate;

    
public BirdHandler(TinyBird deledate) {
        
this.deledate = deledate;
    }

    @Override
    
public Object invoke(Object proxy, Method method, Object[] args)
            
throws Throwable {
        doBefore();
        Object result 
= method.invoke(deledate, args);
        doAfter();
        
return result;
    }

    
private void doBefore() {
        System.out.println(
"before.");
    }

    
private void doAfter() {
        System.out.println(
"after.");
    }
}



public class Factory {

    
private static Bird instance = newInstance(TinyBird.getDefault());

    
public static Bird getDefaultSettings() {
        
return instance;
    }

    
public static Bird newSettings() {
        
return newInstance(new TinyBird());
    }

    
private static Bird newInstance(TinyBird real) {
        Class
<?> c = TinyBird.class;
        
return (Bird) Proxy.newProxyInstance(c.getClassLoader(),
                c.getInterfaces(), 
new BirdHandler(real));
    }

}


Factory.getDefaultSettings()和Factory.newSettings()为什么要同时出现。。。。。。。



posted on 2011-03-30 12:48 wangflood 阅读(140) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: