Codementor Events

Object Oriented Design (series) - Encapsulation

Published Oct 24, 2022
Object Oriented Design (series) - Encapsulation

You can look but you can't touch! šŸ„µ

This one is about exposing to the client only the info you want and in the format you want.

Most descriptions of this concept go around the lines of "add getters and setters on your fields".

ā“ But why would that make a difference for the good?

What is the difference between this class with public fields

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

Book.java

and the same class with getters and setters?

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

ā—ļø Absolutely none! More so, you have a lot more code written that doesn't really bring in any value.

Your client is still able to access and modify all of the book's inner properties, either if it's directly through the properties, either through a method.

There is a catch, though! šŸ˜‰

Discover and read more posts from Andrei Saizu
get started
post commentsBe the first to share your opinion
Show more replies