代理模式 顾名思义 就像某商品生产商 将产品交由 某一销售公司由他们的销售渠道代理出售一样
这个商品生产商 就是被代理类(被代理人) 销售公司就是代理类(代理人) 销售团队就是抽象方法(也就是卖商品)
所以代理模式 就是由代理人 替 被代理人 完成 某一任务
代理模式有三部分组成 第一部分 要有一个被代理类 (商品生产商) 一个抽象接口 (卖商品) 一个代理类(销售公司)
下面我们上代码 看一下这种关系 代理模式
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
使用代理就是让偶和降低 逻辑处理起来更简单方便一点 也更符合我们面向接口编程 反之效果会更好