写点什么

结合 Flink 学习装饰者模式

用户头像
shengjk1
关注
发布于: 2021 年 03 月 30 日

什么是装饰者模式

动态的将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

简单的理解就是通过包装来扩展功能,相比于继承,更有弹性


Flink 是如何实现观察者模式的


@Internalpublic class KafkaDeserializationSchemaWrapper<T> implements KafkaDeserializationSchema<T> {
private static final long serialVersionUID = 2651665280744549932L;
private final DeserializationSchema<T> deserializationSchema;
public KafkaDeserializationSchemaWrapper(DeserializationSchema<T> deserializationSchema) { this.deserializationSchema = deserializationSchema; }
@Override public T deserialize(ConsumerRecord<byte[], byte[]> record) throws Exception { return deserializationSchema.deserialize(record.value()); }
@Override public boolean isEndOfStream(T nextElement) { return deserializationSchema.isEndOfStream(nextElement); }
@Override public TypeInformation<T> getProducedType() { return deserializationSchema.getProducedType(); }}
复制代码

Flink 是通过 Wrapper 方法来实现的


public FlinkKafkaConsumer(Pattern subscriptionPattern, DeserializationSchema<T> valueDeserializer, Properties props) {		this(null, subscriptionPattern, new KafkaDeserializationSchemaWrapper<>(valueDeserializer), props);	}
复制代码


发布于: 2021 年 03 月 30 日阅读数: 6
用户头像

shengjk1

关注

还未添加个人签名 2018.04.26 加入

博客 https://blog.csdn.net/jsjsjs1789

评论

发布
暂无评论
结合 Flink 学习装饰者模式