什么是朱莉亚代表团?

问题描述 投票:0回答:1

我偶尔会看到代表团,朱莉娅的代表团设计模式。

这是什么?

例如。我看到它提到了

design-patterns polymorphism julia composition
1个回答
4
投票

这是一种通过组合(而不是继承)的多态性形式

假设有一个包装类型,包装AbstractT的具体子类型的一些实例,其中包装器本身是AbstractT的子类型(Not nesc始终为true,但一般而言)。

要添加所有方法,一个类似AbstractT的子类型,我们想要将一些或所有这些方法委托给包装对象。我们通过元编程来做到这一点。有关如何执行此操作的一些变化。但总的来说,这是一个难以抽象的模式,所以人们经常写自己的。

说所有AbstractT子类型应该实现1arg lengthsizemean

struct WrappedT{T<:AbstractT} <: AbstractT
    backing ::T
    ...
end

for fun in (:(Base.length), :(Base.size), :(Statistics.mean))
    @eval ($fun)(x::WrappedT, args...) = ($fun(x.backing, args...))
end

一般来说,你不会委托所有的方法,因为你会想要做些不同的事情,毕竟创建新类型的点。

© www.soinside.com 2019 - 2024. All rights reserved.