Objektorientiertes Design (Reihe) – Kapselung

Sie können sehen, aber Sie können nicht berühren! 🥵

Hier geht es darum, dem Kunden nur die gewünschten Informationen und in dem gewünschten Format bereitzustellen.

Die meisten Beschreibungen dieses Konzepts gehen um die Zeilen von “Getter und Setter hinzufügen auf deinen Feldern“.

❓ Aber warum sollte das einen Unterschied zum Guten machen?

Was ist der Unterschied zwischen dieser Klasse und öffentlichen Feldern?

public class Book {
    public String author;
    public String title;
    public Date releaseDate;
    public Integer rentalsNo;
}

Buch.java

und dieselbe Klasse mit Gettern und Settern?

public class Book {
    public String author;
    public String title;
    public Date releaseDate;
    public Integer rentalsNo;

    public String getAuthor() {
        return this.author;
    }
    
    public void setAuthor(String author) {
        this.author = author;
    }

    public String getTitle() {
        return this.title;
    }
    
    public void setTitle(String title) {
    	this.title = title;
    }

    public Date getReleaseDate() {
        return this.releaseDate;
    }
    
    public void setReleaseDate(Date releaseDate) {
        this.releaseDate = releaseDate;
    }

    public Integer getRentalsNo() {
        return this.rentalsNo;
    }

    public void setRentalsNo(Integer rentalsNo) {
        this.rentalsNo = rentalsNo;
    }
}

❗️ Absolut keine! Mehr noch, Sie haben viel mehr Code geschrieben, der keinen wirklichen Wert bringt.

Ihr Client kann weiterhin auf alle inneren Eigenschaften des Buchs zugreifen und diese ändern, entweder direkt über die Eigenschaften oder über eine Methode.

Es gibt jedoch einen Haken! 😉

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *