decorators only work with interfaces, component class is not. This is
part of the reason why we have behaviors

-igor

On 6/12/08, Matthijs Wensveen <[EMAIL PROTECTED]> wrote:
> Some useful design patterns like Decorator don't work with final
> methods. Wicket components sometimes have overridable factory methods
> for child components. The decorator pattern could be very useful here,
> because you'd be able to decorate the original component with some extra
> functionality (Link.onClick for example). Unfortunately this doesn't
> work because some methods are final.
>
> Matthijs
>
> Igor Vaynberg wrote:
>> i mean generally, for methods, fields, and func args :) most of this
>> stuff can stay final, but people dont bother doing it because its
>> extra typing.
>>
>> -igor
>>
>> On Thu, Jun 12, 2008 at 8:38 AM, James Carman
>> <[EMAIL PROTECTED]> wrote:
>>
>>> You mean like C++?
>>>
>>> On Thu, Jun 12, 2008 at 11:35 AM, Igor Vaynberg <[EMAIL PROTECTED]>
>>> wrote:
>>>
>>>> indeed. i wouldnt mind if final was the default in java :)
>>>>
>>>> -igor
>>>>
>>>> On Thu, Jun 12, 2008 at 8:18 AM, Martijn Dashorst
>>>> <[EMAIL PROTECTED]> wrote:
>>>>
>>>>> Without the use of final wicket would not have made it this far.
>>>>>
>>>>> Martijn
>>>>>
>>>>> On Thu, Jun 12, 2008 at 5:08 PM, Brill Pappin <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>> I understand the reasoning, however I think "best practice" can be
>>>>>> debated.
>>>>>> To use your example Swing allows the user to override quite a bit, and
>>>>>> it
>>>>>> doesn't make any (or very few) assumptions on what should and should
>>>>>> not be
>>>>>> done.
>>>>>>
>>>>>> I don't like API's that assume I'm an idiot and prevent me from
>>>>>> manipulating
>>>>>> them how I see fit. If I cause a bug that I have to deal with, thats
>>>>>> *my*
>>>>>> problem to resolve.
>>>>>>
>>>>>> In my book (and I'm not the only one) excessive use of final is an
>>>>>> anti-pattern.
>>>>>>
>>>>>> - Brill Pappin
>>>>>>
>>>>>> On 12-Jun-08, at 10:01 AM, cowwoc wrote:
>>>>>>
>>>>>>
>>>>>>> Brill,
>>>>>>>
>>>>>>> This is actually an API "best practice". Classes fall into two
>>>>>>> categories:
>>>>>>> ones designed for subclassing, and ones designed to be final. The
>>>>>>> same
>>>>>>> goes
>>>>>>> for methods. Swing is full of examples of what goes wrong when people
>>>>>>> override methods in classes that haven't been designed with
>>>>>>> subclassing in
>>>>>>> mind.
>>>>>>>
>>>>>>> Gili
>>>>>>>
>>>>>>>
>>>>>>> Brill Pappin wrote:
>>>>>>>
>>>>>>>> on removing the finals
>>>>>>>>
>>>>>>>> The final members are the worst thing I've had to deal with in
>>>>>>>> Wicket
>>>>>>>> so far.
>>>>>>>> Although I understand that there may be a reason for them, they are
>>>>>>>> more a hinderance than anything else and seem to be trying to
>>>>>>>> "protect
>>>>>>>> users from themselves".
>>>>>>>>
>>>>>>>> - Brill Pappin
>>>>>>>>
>>>>>>>>
>>>>>>>> On 12-Jun-08, at 1:03 AM, cowwoc wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>> Have you considered moving from subclassing to composition in
>>>>>>>>> Wicket
>>>>>>>>> using
>>>>>>>>> Callable<T>?
>>>>>>>>>
>>>>>>>>> Currently it is quite common for developers to subclass a component
>>>>>>>>> in order
>>>>>>>>> to override isVisible() and other properties. I am proposing that
>>>>>>>>> instead
>>>>>>>>> the component classes become final and properties may only be set
>>>>>>>>> using
>>>>>>>>> setter methods. The setter methods would take Callable<T> instead
>>>>>>>>> of
>>>>>>>>> T, so
>>>>>>>>> for example setVisible(boolean) would become
>>>>>>>>> setVisible(Callable<Boolean>)
>>>>>>>>>
>>>>>>>>> The benefit of this approach is that you could introduce static
>>>>>>>>> factory
>>>>>>>>> methods to the Wicket components which would make them much easier
>>>>>>>>> to use in
>>>>>>>>> their Generic form. You could then introduce various helper classes
>>>>>>>>> to
>>>>>>>>> create Callable<T> for constant values, such as
>>>>>>>>> Callable.valueOf(true) would
>>>>>>>>> return a Callable<Boolean> that always returns true.
>>>>>>>>> --
>>>>>>>>> View this message in context:
>>>>>>>>>
>>>>>>>>> http://www.nabble.com/users%2C-please-give-us-your-opinion%3A-what-is-your-take-on-generics-with-Wicket-tp17589984p17792488.html
>>>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>>
>>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/users%2C-please-give-us-your-opinion%3A-what-is-your-take-on-generics-with-Wicket-tp17589984p17800710.html
>>>>>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>
>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Become a Wicket expert, learn from the best: http://wicketinaction.com
>>>>> Apache Wicket 1.3.3 is released
>>>>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.3.3
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to