设计模式之代理模式

代理模式 顾名思义 就像某商品生产商 将产品交由 某一销售公司由他们的销售渠道代理出售一样 

此设计模式最主要就是解耦和了  角色分配和逻辑拆分 能更好的处理逻辑关系

这个商品生产商 就是被代理类(被代理人) 销售公司就是代理类(代理人) 销售团队就是抽象方法(也就是卖商品) 

所以代理模式 就是由代理人 替 被代理人 完成 某一任务 

代理模式有三部分组成 第一部分 要有一个被代理类 (商品生产商) 一个抽象接口 (卖商品) 一个代理类(销售公司)

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,159评论 0 2
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,758评论 0 17
  • 春风,吹落了樱花。 春雨,淋湿了樱树。 拾起那片飘零的花瓣, 想起那一年的那一天。 春雷,吵醒了黑夜。 春光,美好...
    MAY聆听诗语阅读 2,593评论 0 4
  • 原文:吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,...
    乐读书房_李葵阅读 3,471评论 0 0