十、静态代理(10、 Static proxy)-其他
十、静态代理(10、 Static proxy)
对比:
new WeddingCompany(new You()).HappyMarry();
new Thread(()->{System.out.println("我爱你");}).start();
静态代理总结:
- 真实对象和代理对象需要实现同一个接口
- 代理对象需要代理真是角色
静态代理好处:
- 代理对象可以实现真实对象做不了的事情
- 真实对象可以专注自己的事情
public class StaticProxy {
public static void main(String[] args) {
//原来:
You you = new You();
WeddingCompany weddingCompany = new WeddingCompany(you);
weddingCompany.HappyMarry();
//现在:
new WeddingCompany(new You()).HappyMarry();
//对比:
new Thread(()->{System.out.println("我爱你");}).start();
}
}
interface Marry{
void HappyMarry();
}
class WeddingCompany implements Marry{
//代理目标
private Marry target;
public WeddingCompany(Marry target) {
//真实对象
this.target = target;
}
@Override
public void HappyMarry() {
before();
//真实对象
target.HappyMarry();
after();
}
private void before() {
System.out.println("结婚前:布置现场");
}
private void after() {
System.out.println("结婚后:收拾现场");
}
}
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("你结婚了");
}
}
————————
contrast:
new WeddingCompany(new You()).HappyMarry();
new Thread(()->{System.out.println("我爱你");}).start();
Static agent summary:
- Real objects and proxy objects need to implement the same interface
- The proxy object needs a proxy role
Static proxy benefits:
- Proxy objects can achieve things that real objects cannot do
- Real objects can focus on their own things
public class StaticProxy {
public static void main(String[] args) {
//原来:
You you = new You();
WeddingCompany weddingCompany = new WeddingCompany(you);
weddingCompany.HappyMarry();
//现在:
new WeddingCompany(new You()).HappyMarry();
//对比:
new Thread(()->{System.out.println("我爱你");}).start();
}
}
interface Marry{
void HappyMarry();
}
class WeddingCompany implements Marry{
//代理目标
private Marry target;
public WeddingCompany(Marry target) {
//真实对象
this.target = target;
}
@Override
public void HappyMarry() {
before();
//真实对象
target.HappyMarry();
after();
}
private void before() {
System.out.println("结婚前:布置现场");
}
private void after() {
System.out.println("结婚后:收拾现场");
}
}
class You implements Marry{
@Override
public void HappyMarry() {
System.out.println("你结婚了");
}
}