Ik verdiep me nu al een tijdje in The SOLID Principles.
- Single Responsibility
- Open for Extension, closed for modification
- Liskov Substitution principle
- Interface Segregation
- Dependency Injection
Nu loop ik alleen een beetje vast bij de O.
Op deze site https://www.baeldung.com/solid-principles word de O als volgt uitgelegd:
de klasse 'Guitar' word extended omdat er een 'flame-top' klasse word toegevoegd.
Maar als je voor deze 'features' allemaal een nieuwe klasse gaat toevoegen, word je code dan niet een grote zooi van kleine klasses, waarvan je ze eigenlijk in de base class kon doen?
Het voorbeeld
Maar wat nou als ik bijvoorbeeld andere pickups wil in deze gitaar? of misschien wel snaren van een basgitaar erop wil zetten?
Kan dit dan niet beter?
- Single Responsibility
- Open for Extension, closed for modification
- Liskov Substitution principle
- Interface Segregation
- Dependency Injection
Nu loop ik alleen een beetje vast bij de O.
Op deze site https://www.baeldung.com/solid-principles word de O als volgt uitgelegd:
de klasse 'Guitar' word extended omdat er een 'flame-top' klasse word toegevoegd.
Maar als je voor deze 'features' allemaal een nieuwe klasse gaat toevoegen, word je code dan niet een grote zooi van kleine klasses, waarvan je ze eigenlijk in de base class kon doen?
Het voorbeeld
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class Guitar { private String make; private String model; private int volume; //Constructors, getters & setters } public class SuperCoolGuitarWithFlames extends Guitar { private String flameColor; //constructor, getters + setters } |
Maar wat nou als ik bijvoorbeeld andere pickups wil in deze gitaar? of misschien wel snaren van een basgitaar erop wil zetten?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class Pickups extends Guitar { private String brand; private Enum type; //constructor, getters + setters } public class BassGuitarStrings extends Guitar { private String brand; private int gauge; //constructor, getters + setters } |
Kan dit dan niet beter?
Java:
1
2
3
4
5
6
7
8
9
10
11
| public class Guitar { private String make; private String model; private int volume; private enum StringType; private string finishType; private enum PickupType; //Constructors, getters & setters } |
[ Voor 8% gewijzigd door Kleerkast op 05-09-2019 12:11 ]