Java Language Encapsulation pour réduire le couplage


Exemple

L'encapsulation vous permet d'apporter des modifications internes à une classe sans affecter le code qui appelle la classe. Cela réduit le couplage ou combien une classe donnée dépend de l'implémentation d'une autre classe.

Par exemple, modifions l'implémentation de la classe Angle à partir de l'exemple précédent:

public class Angle {
    
    private double angleInDegrees;
    
    public static Angle angleFromDegrees(double degrees){
        Angle a = new Angle();
        a.angleInDegrees = degrees;
        return a;
    }
    
    public static Angle angleFromRadians(double radians){
        Angle a = new Angle();
        a.angleInDegrees = radians*180/Math.PI;
        return a;
    }
    
    public double getDegrees(){
        return angleInDegrees;
    }
    
    public double getRadians(){
        return angleInDegrees*Math.PI / 180;
    }
    
    public void setDegrees(double degrees){
        this.angleInDegrees = degrees;
    }
    
    public void setRadians(double radians){
        this.angleInDegrees = radians*180/Math.PI;
    }

    private Angle(){}
}

L'implémentation de cette classe a été modifiée pour ne stocker qu'une représentation de l'angle et calculer l'autre angle si nécessaire.

Cependant, l'implémentation a changé, mais l'interface ne l'a pas fait . Si une classe appelante comptait sur l'accès à la méthode angleInRadians, elle devrait être modifiée pour utiliser la nouvelle version d' Angle . Les classes appelantes ne devraient pas se soucier de la représentation interne d'une classe.