Java的静态代理模式

1. 静态代理模式的优点

    a)业务类只需要关注业务逻辑本身,保证了业务类的重要性

    b)代理类只需要为业务类提供 准备工作 和 善后工作。具体的 业务工作 由业务类自己实现

譬如:Thread为代理类 Runnable为业务类

Thread的start方法

    1. 创建线程的相关工作

    2. 调用Runnable实现的run方法(由Runnable实现类去实现具体业务)

    3. 回收线程的相关工作

 

静态代理一定程度上实现了解耦合。也是封装的一大体现

把相同的工作(创建线程、回收线程)提取出来封装成一个类

把业务的具体实现 交给另一个类 业务类去具体实现

代理类只需要调用业务类的接口即可

 

2. 静态代理模式的缺点

a) 代码重用性不强,只能代理一类事物。如果有100个不同的业务,代理的内容都不相同。那么就得有100个代理类

 

3. 静态代理模式为什么不用继承实现?

    a) 继承只能是单继承,而接口时多实现的

    b). 如果静态代理模式用继承实现,那么业务类继承了 代理抽象类 就不能再继承别的类了。

    c) 用接口去实现的话,业务类就可以继承别的类,并且又可以实现别的接口

/**
 * 静态代理
 * 接口:
 * 1、真实角色
 * 2、代理角色
 */
public class StaticProxy {
    public static void main(String[] args) {
        // new Thread(new RunnableImpl()).start();
        new WeddingCompany(new You()).happyMarry();
    }
}

// 接口
interface Marry {
    void happyMarry();
}

// 真实角色
class You implements Marry {

    @Override
    public void happyMarry() {
        System.out.println("you and me终于结婚了...");
    }
}

class WeddingCompany implements Marry {

    //真实角色
    private Marry target;

    public WeddingCompany(Marry target) {
        this.target = target;
    }

    @Override
    public void happyMarry() {
        ready();
        this.target.happyMarry();
        after();
    }

    private void after() {
        System.out.println("收拾场地");
    }

    private void ready() {
        System.out.println("布置场地");
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值