You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dmitry Katsubo (JIRA)" <ji...@apache.org> on 2010/03/04 15:45:29 UTC

[jira] Commented: (COMPRESS-61) ArchiveStreamFactory could have static methods as well

    [ https://issues.apache.org/jira/browse/COMPRESS-61?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12841301#action_12841301 ] 

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: https://issues.apache.org/jira/browse/COMPRESS-61
>             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.