静态代理设计模式
代理一般用于记录日志、增强服务。
代理分为静态代理和动态代理,静态代理:类提前写好,直接拿来用;动态代理:在运行过程中,类动态构建。
使用方法:真实角色和代理角色要实现相同的接口,代理角色中要有目标对象。
写的不太清楚,用一段代码示例:
package com.sxt.thread;
/**
* 静态代理
* 接口:
* 1、真实角色
* 2、代理角色
* 2019/7/10 15:36
*/
public class StaticProxy {
public static void main(String[] args) {
new WeddingCompany(new You()).happyMarry();
}
}
interface Marry{
void happyMarry();
}
//真实角色
class You implements Marry{
@Override
public void happyMarry() {
// TODO Auto-generated method stub
System.out.println("you and 嫦娥终于奔月了......");
}
}
//代理角色
class WeddingCompany implements Marry{
//真实角色
private Marry target;
public WeddingCompany(Marry target) {
super();
this.target = target;
}
@Override
public void happyMarry() {
// TODO Auto-generated method stub
ready();
this.target.happyMarry();
after();
}
private void ready() {
System.out.println("布置猪窝.....");
}
private void after() {
System.out.println("闹玉兔....");
}
}
运行结果为:
布置猪窝.....
you and 嫦娥终于奔月了......
闹玉兔....
多线程的启动就是使用静态代理模式的例子,
new Thread(真实对象).start;
真实角色和代理角色都实现了Runnable接口。