前言
在学习了Java的多线程编程时,Java创建一个线程有如下三种不同方法:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
其中点开Thread发现了这个类也是实现了Runnable接口,而使用Runnable接口来创建线程有一些继承Thread类没有的优势,比如可以多个线程共享一个对象。创建线程时需要把Runnable接口实现的对象传入Thread。
相当于Thread是一个代理!
静态代理模式必备条件
- 真实对象和代理对象都要实现同一个接口
- 代理对象要代理真实角色
好处:
-
代理对象可以做很多真实对象做不了的事
-
真实对象可以专注自己的事
简单实现
婚庆公式代理真人结婚!
package com.codefriday.ProxyStatic;
public class StaticProxy {
public static void main(String[] args) {
//代理模式
You you = new You();
new WeddingCompany(you).HappyMarry();
/***
* 对比Thread
* 都实现了Runnable接口
* 然后自己实现的类作为Thread的参数
*/
}
}
//公共接口
interface Marry{
void HappyMarry();
}
//真实对象实现接口
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("你 要结婚了!");
}
}
//代理类实现接口
class WeddingCompany implements Marry{
private Marry target;
public WeddingCompany(Marry target){
this.target = target;
}
@Override
public void HappyMarry() {
before();
this.target.HappyMarry();
after();
}
private void after() {
System.out.println("结婚之后!");
}
private void before() {
System.out.println("结婚之前!");
}
}