Skip to main content

Builder Design Pattern - Java

Builder Design Pattern - Java

When the construction of the class contains a large number of argument then this Design Pattern is preferred.

Builder Pattern, as the name suggest, it helps to reduce the complexity in Building Java Object.


public class Person { private String firstname; private String lastname; private String address; private int age; private String city; private String state; public Person(String firstname, String lastname, String address, int age, String city, String state) { super(); this.firstname = firstname; this.lastname = lastname; this.address = address; this.age = age; this.city = city; this.state = state; } }

In the above example, you can see, that the construction of the Person class has 6 arguments and few of them can be optional.

So we can create a new PersonBuilder class which will help to create the Object of the Person class.


public class PersonBuilder { private String firstname; private String lastname; private String address; private int age; private String city; private String state; public PersonBuilder() { } public PersonBuilder setFirstname(String firstname) { this.firstname = firstname; return this; } public PersonBuilder setLastname(String lastname) { this.lastname = lastname; return this; } public PersonBuilder setAddress(String address) { this.address = address; return this; } public PersonBuilder setAge(int age) { this.age = age; return this; } public PersonBuilder setCity(String city) { this.city = city; return this; } public PersonBuilder setState(String state) { this.state = state; return this; } public Person build() { return new Person(firstname, lastname, address, age, city, state); } }

So, now the Person class can be created as below :

If Person is with address and name then it can created as following new PersonBuilder("firstname", "lastname").setAddress("my address").build();

If Person is with state and name then it can created as following new PersonBuilder("firstname", "lastname").setState("guj").build();

Comments

Popular posts from this blog

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException If you get following error while connecting to your Database with Spring boot, try the suggested solution below: 2018 - 11 - 25 15 : 28 : 50.078 INFO 5335 --- [ main] o. h . e . j . e . i . LobCreatorBuilderImpl : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java. lang . reflect . InvocationTargetException java. lang . reflect . InvocationTargetException : null at sun. reflect . NativeMethodAccessorImpl . invoke0 (Native Method) ~[na: 1.8 . 0 _161] at sun. reflect . NativeMethodAccessorImpl . invoke (NativeMethodAccessorImpl. java : 62 ) ~[na: 1.8 . 0 _161] at sun. reflect . DelegatingMethodAccessorImpl . invoke (DelegatingMethodAccessorImpl. java : 43 ) ~[na: 1.8 . 0 _161] at java. lang . reflect . Method . invoke (Method. java : 498 ) ~[na: 1.8 . 0 _161] at org. hibernate . engin

Could not launch the product because the associated workspace is currently in use by another Eclipse application

If you are seeing following error at the beginning of the Eclipse or any RCP based product then here is the solution: Error Message: "Could not launch the product because the associated workspace is currently in use by another Eclipse application." or “Workspace in use or cannot be created chose a different one.” Solution :  go to workspace location remove file <workspace location>/.metadata/.lock Reason: Through eclipse, user can create multiple Workspace locations. One Workspace location can be edited by one user at a time. A workspace contains the data related to various project configuration and local file storage. To avoid multiple users to access the same workspace, eclipse is maintaining a ".lock" file inside the Workspace. Eclipse will remove this ".lock" file when you will close the Eclipse. But in some cases, the Eclipse will crash due to some error, due to which it could not able to remove ".lock" file from

How to resolve : print() on closed filehandle in perl

How to resolve : print() on closed filehandle in perl Error "print() on closed filehandle" generated in the following condition ( it is on of possible cause of it) -------------------------- BEGIN Code --------------------------------------- my $inputFile = '/this/is/path/of/your/input/file.txt'; open(MYINPUTFILE, ">","$inputFile"); print MYINPUTFILE "any data"; close(MYINPUTFILE); -------------------------- END Code --------------------------------------- here if you don't have permission to access the path '/this/is/path/of/your/input/file.txt' or the path (of parent directory) does not exist then it will throuw the error : print() on closed filehandle To resolve this better to make practice as follow while opening the file: -------------------------- BEGIN Code --------------------------------------- open(MYINPUTFILE, ">","$inputFile") or die "ERROR ::: unable access the file&