静态代理

静态代理
dailjing静态代理,是接口的一种应用方式。
首先由一个接口,然后对应接口有一个实现。
代理就是不需要本类去操作,而是让人家去操作。
比如,你需要买一张票,让黄牛代替你去买。
代理类和被代理类共同实现一同一个接口,这样代理类就具有被代理类的相同的功能方法。然后代理类需要获取到被代理类的实例,用来执行被代理类的操作,所以代码实现中,代理类中应该能获取到接口或者具体被代理类的对象,这样才能做被代理类的功能。这个对象可以在构造器中传入,然后再代理类中实现的接口的方法中,在通过被代理类对象运行相应功能。在运行前后增加相应的逻辑,就可以对被代理类的功能进行增强。
代码如下:
代理类即可代替被代理类执行功能,又能把功能增强。

interface PutongUser{

int buyTicket();

}

class VipUser implements PutongUser{

@Override
public int buyTicket() {
    System.out.println("vip可以买5张票");
    return 5;
}

}

class ProxyUser implements PutongUser{

private PutongUser putongUser;

 ProxyUser(PutongUser putongUser){
     this.putongUser = putongUser;
 }

@Override
public int buyTicket() { buyTenTicket();
    putongUser.buyTicket();
    return 0;
}

public int buyTenTicket(){
     System.out.println("黄牛自带可以买十个票功能");
    return 10;
}

public static void main(String[] args) {
    PutongUser putongUser = new VipUser();
    ProxyUser proxyUser = new ProxyUser(putongUser);
    proxyUser.buyTicket();
}

java中的典型例子
线程的创建
Runable接口即是需要继承的接口thread是其代理类。
自己的写的继承Runable接口的类即是被代理的类。
创建线程,用Thread执行即可。

public class ThreadStaticProxy {
public static void main(String[] args) {
Runnable myThead = new MyThead();// 目标角色
Thread proxy = new Thread(myThead ).start();// 代理角色

}

}

//代理类
class MyThread implements Runnable {

public void run() {
	System.out.println("执行。。。。。。。。");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值