Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #39211
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: How to handle methods in a common interface that supports different versions of a message format |
| Date | 2019-12-09 21:24 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <qsmvks$deb$1@gioia.aioe.org> (permalink) |
| References | <2adff0bf-b579-4a12-87bc-70e1fe90a829@googlegroups.com> <qsf3v9$1rqj$1@gioia.aioe.org> <42878753-3e34-4b35-8829-a11f990485d9@googlegroups.com> |
On 12/9/2019 2:51 AM, mike wrote:
> Den lördag 7 december 2019 kl. 03:49:27 UTC+1 skrev Arne Vajhøj:
>> On 12/6/2019 2:55 AM, mike wrote:
>>> I would need some advice in the following issue:
>>>
>>> public interface Netconf {
>>>
>>> void methodA();
>>>
>>> void methodB();
>>>
>>> }
>>>
>>> The issue I have is that methodA() only supports NETCONF message
>>> 1.0 and methodB() only supports NETCONF message 1.1
>>>
>>> 1. Is it better to have separate interfaces like: Netconf and
>>> Netconf_1.1 ( better naming?) 2. If we use one interface,
>>> Netconf, and in the implementation we have a property for
>>> netconfVersion should I just throw exception if methodA() is
>>> called and we have set netconfVersion 1.1?
>>>
>>> Any other considerations I need to do when supporting multiple
>>> versions of a message like NETCONF?
>>
>> If you want to use proper typing then I like:
>>
>> public interface Netconf { NetconfVersion getVersion(); }
>>
>> public interface Netconf10 extends Netconf { void methodA(); }
>>
>> public interface Netconf11 extends Netconf { void methodB(); }
>>
>> Having methods that should not be there and that throws an
>> exception is not good IMHO.
> Thanks for the reply. I like the idea. I have a follow-up question:
>
> Since we only had support for 1.0 user only used Netconf interface.
> Now we will return two types of interfaces Netconf10 or Netconf11.
> This would mean that users using 1.0 (Netconf) now need to use
> Netconf10 in those cases they need Netconf 1.0 specific
> methods.Correct?
If I understand you correctly then your concern is backwards
compatibility.
So if you today have:
public interface Netconf {
void methodA();
}
public class NetconfFactory {
public static Netconf getOne() {
...
}
}
and client code:
Netconf nc = NetconfFactory.getOne();
nc.methodA();
Then you will need to either change client code to ref Netconf10 or
use different namings:
interface NetconfBase
interface Netconf extends NetconfBase
interface Netconf11 extends NetconfBase
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
How to handle methods in a common interface that supports different versions of a message format mike <mikaelpetterson@hotmail.com> - 2019-12-05 23:55 -0800
How to handle methods in a common interface that supports different versions of a message format javaXp <n.sharir@gmail.com> - 2019-12-06 04:27 -0800
Re: How to handle methods in a common interface that supports different versions of a message format Arne Vajhøj <arne@vajhoej.dk> - 2019-12-06 21:49 -0500
Re: How to handle methods in a common interface that supports different versions of a message format mike <mikaelpetterson@hotmail.com> - 2019-12-08 23:51 -0800
Re: How to handle methods in a common interface that supports different versions of a message format Arne Vajhøj <arne@vajhoej.dk> - 2019-12-09 21:24 -0500
Re: How to handle methods in a common interface that supports different versions of a message format Andreas Leitgeb <avl@logic.at> - 2019-12-10 16:41 +0000
csiph-web