/* 代理设计一般格式: 一个接口, 一个实现接口的代理类,同时代理类需要传入一个被代理的类 一个实现接口的被代理类 */ package com.proxy.model; interface Action{ public abstract void sing(); } /* *需要被代理的类 */ class Singer implements Action{ @Override public void sing() { System.out.println("歌手自己完成唱歌"); } } /* * 代理类需要传入一个需要被代理的类 */ class ProxySinger implements Action{ private Singer singer; public ProxySinger(Singer singer){ this.singer=singer; } public void ready(){ System.out.println("1.歌手开演唱会,首先需要经纪人负责联系,自己只负责唱歌"); } @Override public void sing() { this.ready(); singer.sing(); this.end(); } public void end(){ System.out.println("2.结束演唱会后,经纪人需要完成收尾工作,歌手自己只做了唱歌一件事"); } } public class Test { public static void main(String[] args) { Action action=new ProxySinger(new Singer()); action.sing(); } }