铁匠 铁匠
首页
golang
java
架构
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

铁匠

不予评判的专注当下
首页
golang
java
架构
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 概览

  • 设计模式

    • 软件设计原则
    • 创建型

    • 结构型

      • 装饰器模式
      • 委派模式
      • 代理模式
    • 行为型

  • 性能优化

  • 分布式

  • 网关

  • 流量治理

  • 数据治理

  • 云原生

  • 架构
  • 设计模式
  • 结构型
xugaoyi
2023-01-03

委派模式

在委派模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委派给另一个对象来处理。委派模式使得我们可以用聚合来替代继承

使用委派模式的场景

  1. 一个接口已知有多重实现,但对客户端屏蔽实现细节
  2. 差异化逻辑委派给其他类实现,通过组合形式进行解耦

public interface Printer {

    void print(final String message);

}

public class HpPrinter implements Printer {
    @Override
    public void print(final String message) {
        System.out.println("HP Printer : " + message);
    }
}

public class EpsonPrinter implements Printer {
    @Override
    public void print(final String message) {
        System.out.println("Epson Printer : " + message);
    }
}


public class PrinterController implements Printer {

    private final Printer delegate;

    public PrinterController(final Printer delegate) {
        this.delegate = delegate;
    }

    @Override
    public void print(final String message) {
        delegate.print(message);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

测试类

public class PrinterApp {

    public static void main(String[] args) {
        PrinterController controller = new PrinterController(new HpPrinter());
        controller.print("hello world");
    }
}
1
2
3
4
5
6
7
#委派模式
Last Updated: 2024/04/23, 01:30:37
装饰器模式
代理模式

← 装饰器模式 代理模式→

最近更新
01
go-kit学习指南 - 多协议支持
04-19
02
go-kit学习指南 - 中间件
04-19
03
go-kit开发微服务 - 服务注册与发现
04-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 铁匠 | 粤ICP备15021633号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式