代理模式分为两种:静态代理 和 动态代理
今天先记录静态代理。
静态代理
举个例子:用户买车,我们都是从4S店买的吧,没有直接从大众、奥迪、宝马这些生产厂家买的
![](https://img.haomeiwen.com/i17316272/cacd7a88cf1b5280.png)
具体代码如下:
不管是品牌商 还是 销售员 两个都有销售的功能 ,所以需要一个售卖的接口
/**
* 售卖接口
*/
public interface SellInterface {
void sell();
}
被代理人最简单只需要实现 售卖接口就行,如下:
/**
* 奔驰品牌,被代理的对象
*/
public class BMWBrand implements SellInterface {
@Override
public void sell() {
System.out.println("品牌卖出了商品");
}
}
代理人 (奔驰售货员) 因为最终还是要卖 被代理人(奔驰品牌) 的商品(或者是最终是要调用被代理人的人售卖的方法),所以代理人 是需要 被代理人 对象,代码如下:
/**
* 奔驰售货员,代理对象
*/
public class BMWSalesPerson implements SellInterface {
//在代理对象中会持有被代理对象
private final BMWBrand brand;
public BMWSalesPerson(BMWBrand brand) {
this.brand = brand;
}
@Override
public void sell() {
System.out.println("售货员加价");
brand.sell();
System.out.println("售货员拿了提成");
}
}
最终调用:
public class Main {
public static void main(String[] args) {
BMWSalesPerson salesPerson = new BMWSalesPerson(new BMWBrand());
salesPerson.sell();
}
}
打印输出:
售货员加价
品牌卖出了商品
售货员拿了提成
网友评论