Hi,

Ralph Goers wrote:
> I believe this is the only discussion on 2.0 I've seen on the
> dev list.
> I went and scanned the archives a while ago. Rereading this thread I
> don't really see a decision to use an Abstract class.  I'm not sure I
> understand the discussion about which is more extendable. Yes, an
> abstract class means you can provide a dummy implementation,
> but this is
> only of value if there are implementations of that extend it
> outside the
> project. I also tend to believe that thinking that you are somehow
> better off with the abstract class is a fallacy. In many cases the
> method you will be provide will either do nothing useful or will be
> inappropriate for the "real" implementation. In both cases the
> implementation class will still have to be modified to provide an
> appropriate implementation of the new method. But worse, you
> won't get
> an indication that things are "broken" because the method
> will be there.
> If you were using an interface the problem would be apparent at load
> time and the implementation would have to change to be
> compatible with
> the new release.
> 
> BTW - there is no reason you can't have an interface and an abstract
> base class. 

IMHO we should define what we want to reach. Adding a method to an interface 
does not break *binary* compatibility of existing code. The method is simply 
not called. However, a client will have to implement the new method, if CConf 
is a compile time dependency *and* he uses an implementation not delivered by 
CConf. Maybe it is the best approach to have an abstract base class and the 
interface. We have to tell our users, that they should extend from the abstract 
class if they want to ensure backward compatibility for own implementations of 
the Configuration interface. Point is, that it *is* only an 
advice/recommendation and something like clirr will always report a violation 
in compatibility. Hoiwever, it is our desicion how we should proceed.

- Jörg

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

Reply via email to