Объектно-ориентированный дизайн (серия) — инкапсуляция

Смотреть можно, но трогать нельзя! 🥵

Это касается предоставления клиенту только той информации, которую вы хотите, и в нужном вам формате.

Большинство описаний этой концепции идет вокруг линий «добавить геттеры и сеттеры на ваших полях«.

❓ Но почему это должно изменить ситуацию к лучшему?

В чем разница между этим классом с публичными полями

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

Book.java

и тот же класс с геттерами и сеттерами?

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;
    }
}

❗️Абсолютно никаких! Более того, вы написали намного больше кода, который на самом деле не приносит никакой пользы.

Ваш клиент по-прежнему может получать доступ ко всем внутренним свойствам книги и изменять их либо непосредственно через свойства, либо с помощью метода.

Однако есть одна загвоздка! 😉

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *