stel ik heb de volgende java interface
en de volgende implementaties
mogelijke client code kan er zo uit zien:
allemaal leuk en aardig. Nu wil ik een andere soort parser schrijven. Bijvoorbeeld een XML Parser. Nou is mijn vraag:
1: kan ik het volgende in IParser interface toevoegen?
waarvan de eerste attribute een xml instance is en de tweede attribuut een xsd. Als ik het bovenstaande method toevoegd dan moet FlatFileParser deze methode ook gaan implementeren. FlatFileParser gebruikt deze methode niet. Mijn tweede vraag is:
2: hoe kan ik voorkomen dat clients deze methode aanroepen? moet ik dan een exceptie / error gooien? of null laten teruggeven? dat laaste wekt verwarring op.
Of kan ik beter een apparte interface definieren voor de XMLParser? Wat ik eigenlijk wil is dat de client maar tegen 1 interface of aan te praten.
hebben jullie misschien een idee hoe ik dit probleem het beste aan kan pakken?
code:
1
2
3
| public interface IParser {
public List parse(String line);
} |
en de volgende implementaties
code:
1
2
3
4
5
| public class FlatFileParser implements IParser{
public List parse(String line){
//do something
}
} |
mogelijke client code kan er zo uit zien:
code:
1
2
| IParser parser = new FlatFileParser();
parser.parse("some string"); |
allemaal leuk en aardig. Nu wil ik een andere soort parser schrijven. Bijvoorbeeld een XML Parser. Nou is mijn vraag:
1: kan ik het volgende in IParser interface toevoegen?
code:
1
| public List parser(String file, string file); |
waarvan de eerste attribute een xml instance is en de tweede attribuut een xsd. Als ik het bovenstaande method toevoegd dan moet FlatFileParser deze methode ook gaan implementeren. FlatFileParser gebruikt deze methode niet. Mijn tweede vraag is:
2: hoe kan ik voorkomen dat clients deze methode aanroepen? moet ik dan een exceptie / error gooien? of null laten teruggeven? dat laaste wekt verwarring op.
Of kan ik beter een apparte interface definieren voor de XMLParser? Wat ik eigenlijk wil is dat de client maar tegen 1 interface of aan te praten.
hebben jullie misschien een idee hoe ik dit probleem het beste aan kan pakken?