l 案例简介: (1) 明星接口(定义唱歌、拍戏方法) (2) 谢霆锋作为明星(目标对象),需要实现明细接口 经纪人也实现明星接口,唱歌拍戏前要先看看价格是否合适。 /**
* 明星接口:定义规范,约定的作用。
*/
public interface IStar {
/**
* 唱歌
*/
void singing(double money);
/**
* 拍戏
*/
void play(double money);
} | | /**
* 明星刘德华,是目标对象
*/
public class LiuDeHuaStar implements IStar {
@Override
public void singing(double money) {
System.out.println("谢霆锋唱歌一级棒,收费标准:"+money);
}
@Override
public void play(double money) {
System.out.println("刘德华拍戏棒棒滴,收费标准:"+money);
}
} | |
/**
* 静态代理,
* 1. 代理对需要实现与目标对象一样的接口
* 2. 代理类中需要维护一个目标对象
*/
public class LiuDeHuaProxy implements IStar{
// 创建目标对象
private IStar target = new LiuDeHuaStar();
@Override
public void singing(double money) {
if (money > 200000) {
// 调用目标对象方法
target.singing(money);
}else {
System.out.println("我很忙,后期再合作!");
}
}
@Override
public void play(double money) {
if (money > 200000) {
// 调用目标对象方法
target.play(money);
}else{
System.out.println("我很忙,后期再合作!");
}
}
}
| | public class App {
public static void main(String[] args) {
// 创建代理对象
IStar proxy = new LiuDeHuaProxy();
// 调用代理对象的方法,代理对象会访问目标对象,再目标对象实现基础上额外扩展了一些功能:验证
proxy.play(1);
proxy.singing(100001);
}
} |
总结:
1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.
|