初探设计模式之代理模式

代理模式 顾名思义 就像某商品生产商 将产品交由 某一销售公司由他们的销售渠道代理出售一样
这个商品生产商 就是被代理类(被代理人) 销售公司就是代理类(代理人) 销售团队就是抽象方法(也就是卖商品)
所以代理模式 就是由代理人 替 被代理人 完成 某一任务
代理模式有三部分组成 第一部分 要有一个被代理类 (商品生产商) 一个抽象接口 (卖商品) 一个代理类(销售公司)

下面我们上代码 看一下这种关系 代理模式

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

使用代理就是让偶和降低 逻辑处理起来更简单方便一点 也更符合我们面向接口编程 反之效果会更好

猜你喜欢

转载自blog.csdn.net/naide_s/article/details/80742825