February 16, 2012 Re: Re: Default Implementation For an Interface | ||||
---|---|---|---|---|
| ||||
> As a user (read developer), I'd rather code to the generic interface when possible. I like that concrete implementations looks rather long and ugly
> I don't think you should be worried that your users is using direct implementations rather than the interface - their problem!
>
> Remember that in D, interfaces can contain implementations that only uses static methods on the interface:
>
> interface DB {
> @property string name();
> // interfaces can have implementations
> static DB createDefault() { return new GenericDB(); }
> }
>
> class GenericDB : DB {
> @property string name() {
> return "generic"; }
> }
>
> class MySQLDB : DB {
> @property string name() {
> return "mysql"; }
> }
>
> void main() {
> assert(DB.createDefault().name == "generic");
> assert((new MySQLDB()).name == "mysql");
> }
I see what you are saying. If it is not possible to have a default I think I will call the interface Database and the class BasicDatabase as that sounds intuitive.
Thanks to everyone for the help.
|
Copyright © 1999-2021 by the D Language Foundation