Is your feature request related to a problem or challenge?
Similiarly to #8712  (see the rationale there)
@guojidan made a trait for creating WindowUDFs (thank you!) -- #8719 but the existing WindowUDF struct still uses function pointers for implementation.
Describe the solution you'd like
I would like to apply the same basic pattern as in #8713 to WindowUDF so that the implementation of WindowUDF is an inner: Arc<WindowUDFImpl> rather than
Describe alternatives you've considered
No response
Additional context
No response