java技术博客

jsp博客
数据加载中……
java代理模式
package orj.jzkangta.proxydemo02;

public class ComputerMaker implements SaleComputer {

    
public void sale(String type) {
        System.out.println(
"卖出了一台"+type+"电脑");

    }


}



package orj.jzkangta.proxydemo02;

import java.lang.reflect.Proxy;

public class ComputerProxy {
    
public static SaleComputer getComputerMaker(){
        ProxyFunction pf
=new ProxyFunction();
        
return (SaleComputer)Proxy.newProxyInstance(ComputerMaker.class.getClassLoader(), ComputerMaker.class.getInterfaces(), pf);
    }

}





package orj.jzkangta.proxydemo02;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class ProxyFunction implements InvocationHandler {
    
private ComputerMaker cm;
    
    
public void youHui(){
        System.out.println(
"我给你一些优惠。。。");
    }

    
    
public void giveMouse(){
        System.out.println(
"我还要送你一个鼠标。。。 ");
    }

    
public Object invoke(Object arg0, Method arg1, Object[] arg2)
            
throws Throwable {
        String type
=(String)arg2[0];
        
if(type.equals("联想")||type.equals("三星")){
            
if(cm==null){
                cm
=new ComputerMaker();
                youHui();
                giveMouse();
                arg1.invoke(cm, type);
            }

        }
else{
            System.out.println(
"我没有你要的这个牌子的电脑。。。。");
        }

        
return null;
    }


}

package orj.jzkangta.proxydemo02;

public interface SaleComputer {
    
public void sale(String type);
}


package orj.jzkangta.proxydemo02;

public class Test {

    
    
public static void main(String[] args) {
        SaleComputer sc
=ComputerProxy.getComputerMaker();
        
//sc.sale("联想");
        
//sc.sale("三星");
        sc.sale("Dell");

    }


}

posted on 2008-10-31 07:49 郭兴华 阅读(726) 评论(0)  编辑  收藏


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


网站导航: