铁匠 铁匠
首页
收藏
java
架构之路
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
链接
  • 分类
  • 标签
  • 归档

专注、不予评判地关注当下
首页
收藏
java
架构之路
常用算法
  • Java
  • nginx
  • 系统运维
  • 系统安全
  • mysql
  • redis
参考文档
关于
链接
  • 分类
  • 标签
  • 归档
  • 概览

  • 设计模式

    • 软件设计原则
    • 创建型

    • 结构型

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

  • 高可用

  • 性能优化

  • 分布式

  • 网关

  • 流量治理

  • 数据治理

  • 云原生

  • 网络安全

  • 架构
  • 设计模式
  • 结构型
fengjx
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
#委派模式
装饰器模式
代理模式

← 装饰器模式 代理模式→

最近更新
01
策略模式
01-09
02
模板方法
01-06
03
观察者模式
01-06
更多文章>
Theme by Vdoing | Copyright © 2016-2023 铁匠 | 粤ICP备15021633号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式