Fluent Interface

 Fluent Interface was coined by Martin Fowler and Eric Evans.This makes code easy to read and is implemented by method chaining.

Example: consider a Person class

Person.java
package com.sandhya;


public class Person {

private String name;
private int age;
private double salary;

public Person(String name, int age, double salary)
{
this.name = name;
this.age = age;
this.salary = salary;
}

public void setName(String name)
{
this.name = name;
}

public String getName()
{
return this.name;
}

public void setAge(int age)
{
this.age = age;
}

public int getAge()
{
return this.age;
}

public void setSalary(double salary)
{
this.salary = salary;
}

public double getSalary()
{
return this.salary;
}


}

PersonBuilder.java
package com.sandhya;

public class PersonBuilder {

private String name;
private int age;
private double salary;

public PersonBuilder()
{
}

public PersonBuilder setName(String name)
{
this.name = name;
return this;
}

public PersonBuilder setAge(int age)
{
this.age = age;
return this;
}

public PersonBuilder setSalary(double salary)
{
this.salary = salary;
return this;
}

public Person toPerson()
{
Person p = new Person(name,age,salary);
return p;
}


}
In PersonBuilder class setter methods returns current instance of PersonBuilder. Because of this ,methods can be called as a chain.
PersonBuilder builder = new PersonBuilder()
.setName("Sidharth")
.setAge(10)
.setSalary(20000);
Main.java

package com.sandhya;

public class Main {

public static void main(String[] args)
{
PersonBuilder builder = new PersonBuilder()
.setName("Sidharth")
.setAge(10)
.setSalary(20000);
Person p = builder.toPerson();
System.out.println("Name:"+p.getName() +
" Age:"+p.getAge()+
" Salary:"+p.getSalary());

}

}

Comments

Popular posts from this blog

Transform values with a stream

Collections Framework

Inspect a collection