| S | Single responsibility principle |
| O | Open/closed |
| L | Liskov substitution principle |
| I | Interface segregation principle |
| D | Dependency inversion principle |
public class Client{
private String raisonSociale;
private String ville;
private String rue;
private String codePostal;
}
public class Client{
private String raisonSociale;
private Adresse adresse;
}
public class Adresse{
private String ville;
private String rue;
private String codePostal;
}
public class Client{
private String raisonSociale;
private Adresse adresse;
private Adresse adresseFacturation;
}
public class Adresse{
private String ville;
private String rue;
private String codePostal;
}
public class Utilisateur{
private String nom;
private String prenom;
private String mail;
private String password;
}
public class Docteur{
private Utilisateur utilisateur;
private String numeroPraticien;
}
public class Patient {
private Utilisateur utilisateur;
private Docteur docteur;
}
public class AbstractBidule{
abstract void doSomething()
public void doOther(){
...
(doSomething is never called)
...
}
}
public class BiduleTruc extends AbstractBidule{
@Override
void doSomething(){
this.doOther()
}
}
public class AbstractBidule{
abstract void doSomething()
abstract boolean doThird()
public void doOther(){
if(this.doThird()){
this.doSomething()
}
}
}
public class BiduleTruc extends AbstractBidule{
@Override
void doSomething(){
....
}
@Override
boolean doThird(){
....
return result;
}
}
Objet exemple :
public class Animal{
private Long id;
private String nom;
private List<Animal> enfants;
private List<Repas> repas;
private Espece espece;
}
{
"id": "12",
"nom": "Paul",
"enfants" :[
{
"id": "13",
"nom": "Paul2"
}
],
"repas": [],
"espece": {
"nom": "pingouin"
}
}
Get /animals/12
{
"id": 12;
"nom": "Paul"
"espece": {
"nom": "pingouin"
}
}
Get /animals?parent=12
[
{
"id": 13;
"nom": "Paul2"
}
]
Get /repas?animal=12
[
{
"id": 13;
"nom": "Paul2"
}
]
app/ |- config/ |- controller/ |- repository/ |- service/ |
app/ |- compta/ | |- config/ | |- controller/ | |- repository/ | |- service/ | |- facture/ | |- config/ | |- controller/ | |- repository/ | |- service/
app/ |- compta/ | |- config/ | |- in/ | | |- controller/ | | |- amqp/ | |- out/ | | |- repository/ | |- service/ | |- facture/ | |- config/ | |- in/ | | |- controller/ | |- out/ | | |- repository/ | | |- compta/ | |- service/