You only need to (should) set the template one place: so only set it in ZCML if it it ‘always the same’.
Without knowing much: Do you ‘really need all this stuff’.
Unless you need to do 'a lot of stuff, you only need to change ‘template’.
Even then, you can do thing like:
in template one
and define them in ‘SwitchView’ as
Then, you probably dont have to ‘duplicate so much code’
Also: you can do a ‘normal’ redirect, like the link view does.
PS: it is also possible to have two views with the same class and define the templates in ZCML