代理模式之静态代理
什么是代理模式
在不修改被代理对象的前提下,通过代理类来实现对被代理类的扩展
代理模式的实现
一个共同实现的接口或者继承的父类
通过多态的方式,
相同接口的方式实现代理类
public interface Person {
void eat();
String getName();
}
两个实现类
public class Father implements Person {
public String name = "father";
@Override
public void eat() {
System.out.println("invoke father eat method");
}
@Override
public String getName() {
return this.name;
}
}
public class Son implements Person{
public String name = "son";
@Override
public void eat() {
System.out.println("invoke son eat method");
}
@Override
public String getName() {
return this.name;
}
}
代理类
package com.test.design_mode.proxy.static_proxy;
public class PersonProxy implements Person {
private Person person;
public PersonProxy(Person person) {
this.person = person;
}
@Override
public void eat() {
System.out.println("invoke PersonProxy start");
System.out.println("i is "+person.getName());
person.eat();
System.out.println("invoke PersonProxy end");
}
@Override
public String getName() {
return null;
}
}
测试方法
public class Main {
public static void main(String[] args) {
Person person = new PersonProxy(new Son());
person.eat();
System.out.println("-------------------------------");
Person person1 = new PersonProxy(new Father());
person1.eat();
}
}