代理模式 顾名思义 就像某商品生产商 将产品交由 某一销售公司由他们的销售渠道代理出售一样
此设计模式最主要就是解耦和了 角色分配和逻辑拆分 能更好的处理逻辑关系
这个商品生产商 就是被代理类(被代理人) 销售公司就是代理类(代理人) 销售团队就是抽象方法(也就是卖商品)
所以代理模式 就是由代理人 替 被代理人 完成 某一任务
代理模式有三部分组成 第一部分 要有一个被代理类 (商品生产商) 一个抽象接口 (卖商品) 一个代理类(销售公司)
下面我们上代码 看一下这种关系 代理模式
public class Producers implements SalesInf{
// 生产商 被代理类
String name;
String function;
Buidler buidler;
public Producers(Buidler buidler) {
this.name = buidler.name;
this.function = buidler.function;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFunction() {
return function;
}
public void setFunction(String function) {
this.function = function;
}
static class Buidler{
String name;
String function;
public Buidler setName(String name){
this.name = name;
return this;
}
public Buidler setFunction(String function){
this.function = function;
return this;
}
public Producers build(){
return new Producers(this);
}
}
@Override
public void salesMothed() {
System.out.print("我是生产商,商品是我的\n");
} }
public interface SalesInf {
// 销售 抽象方法
void salesMothed();
}
public class Agent implements SalesInf{
// 代理类 商品代理人
private Producers producers;
public Agent(Producers producers) {
this.producers = producers;
}
@Override
public void salesMothed() {
producers.salesMothed();
System.out.print("我是代理人,商品不是我的,但是只有我能卖\n");
}
public class CompanyTest {
public static void main(String[] args) {
Producers.Buidler buidler = new Producers.Buidler();
Producers producers = buidler.setName("三聚氰胺").setFunction("我很好吃").build();
Agent agent = new Agent(producers);
agent.salesMothed();
} }
这是输出结果 和 执行顺序
我是生产商,商品是我的 我是代理人,商品不是我的,但是只有我能卖
Process finished with exit code 0