commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dmitry Katsubo (JIRA)" <>
Subject [jira] Commented: (COMPRESS-61) ArchiveStreamFactory could have static methods as well
Date Thu, 04 Mar 2010 14:45:29 GMT


Dmitry Katsubo commented on COMPRESS-61:

Torsten, I completely understand your position and argumentation. But in 99% of the cases
this factory will be used just to create available compressors. In another 1% of the cases
I would possibly extend current factory with some more exotic compressor, which only I know
how to implement. OK, in this case my steps are:
- I need to create {{MyArchiveStreamFactory}} that extends {{ArchiveStreamFactory}} and override
e.g. {{createArchiveInputStream()}}
- Now I need to pass this factory somewhere. What type I will pass? Of course, I can pass
more generic type {{ArchiveStreamFactory}} and it will work fine, as it has methods overridden.
But will I put put compile-time dependency on the rest of my project on {{commons-compress}}
library? No. So I will pass {{MyArchiveStreamFactory}}.

The situation changes, if I _introduce the interface for the factory_. As there are no interfaces
defined in {{commons-compress}}, I will use some infrastructure, which is build on the top
of existing {{ArchiveStreamFactory}}. And again, it brings no benefits on how {{ArchiveStreamFactory.createArchiveInputStream()}}
is exposed.

So I would say: _using {{static}} methods for factory methods does not limit its usage_. All
above is just my opinion, which may be wrong. If you have any counter-cases, please, comment.

> ArchiveStreamFactory could have static methods as well
> ------------------------------------------------------
>                 Key: COMPRESS-61
>                 URL:
>             Project: Commons Compress
>          Issue Type: Improvement
>            Reporter: Sebb
> ArchiveStreamFactory currently has to be instantiated in order to use it.
> The methods have to be instance methods in order for subclasses to override them, but
until that is done (will it ever be done?) it seems a bit unnecessary to create an instance
of the class.
> Perhaps there could be a private static instance of the class that could be used with
public static methods?
> The same considerations apply to the other factories.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message