代理模式:
为其他对象提供一种代理以控制对这个对象的访问,有时委托类不适合或不能直接引用另一个对象时,代理类就在两方之间起到一个桥梁的作用。代理设计模式符合开闭原则 ,在不修改原有类的基础上,增强原有类的功能逻辑。
代理模式优点:
增强真实对象
保护真是对象
降低系统耦合度,扩展性好
代理模式缺点:
代理类使系统设计时的类增多
静态代理: 一个接口,两个类:真实业务类,代理类
静态体现在:代理类和真实类的关系在程序运行前就确定了
在静态代理的实现中,需要定义一个接口,真实业务类和代理类都要实现这个接口,同时在代理类中,要定义一个真实对象的引用,通过构造方法传给代理类对象,然后在调用业务方法时,调用真实类的业务实现
//定义了业务的实现规范
interface Buy {
void buyMac();
void buyGivenchy();
}
//真实类(委托类)真实业务的实现
class Real implements Buy{
@Override
public void buyMac() {
System.out.println("buy a mac");
}
@Override
public void buyGivenchy() {
System.out.println("buy a givenchy");
}
}
//代理类 代理Real类搜集有的功能,并做额外的增强
class ProxyClass implements Buy{
//引用接口对象使得代理类可以访问实体
private Buy buy;
public