public interface Animal {void eat();}
public class Dog implements Animal{@Overridepublic void eat() {System.out.println("dog eat......");}}
// 代理类public class AnimalProxy implements Animal {private Animal animal;public AnimalProxy(Animal animal) {this.animal = animal;}@Overridepublic void eat() {System.out.println("before eat.....");animal.eat();System.out.println("after eat.....");}}
// 工厂用来生产代理类public class ProxyFactory {// 通过工厂获取代理类public static Animal getAnimal(Animal animal) {return new AnimalProxy(animal);}}
// 测试
public class Main {public static void main(String[] args) {Animal animal = ProxyFactory.getAnimal(new Dog());animal.eat();}}
