Skip to main content

Factory Design Pattern - Java

Factory Design Pattern

Factory Design Pattern works as per it's name. As one Factory can generate various types of items but of a specific category. Like, Car Factory ( Nissan Car Factory ) can create cars like, Micra, Sunny, Evalia but it can't create Duster. Because,Duster can be created by Renault Car Factory.



So, with the same concept, A company can create a various types of Employees. Like, Developer, Admin , Developer Manager. But, only Developer can be Dev Manager.




Here is the Complete example of creating the Company with all the Employee details.

Class Company.java
/**
 * Parent Class of all Class. Employee is Base class of all types of Employee.
 *
 * @author Hari
 *
 */
abstract class Employee {
 public abstract void getMyDetails();
}
/**
 * Admin is child class of the Employee class.
 *
 * @author Hari
 */
class Admin extends Employee {
 public void getMyDetails() {
  System.out.println("I'm admin");
 }
}
/**
 * Developer is another child class of Employee Class
 *
 * @author Hari
 */
class Developer extends Employee {
 public void getMyDetails() {
  System.out.println("I'm Developer");
 }
}
/**
 * DevManager is the Class derived from Developer.s
 *
 * @author Hari
 *
 */
class DevManager extends Developer {
 public void getMyDetails() {
  super.getMyDetails();
  System.out.println("I'm Manager");
 }
}
/**
 * Enum Type id defined to get the argument as specific type of the class
 *
 * @author Hari
 *
 */
enum EmployeeType {
 ADMIN, DEVELOPER, DEV_MANAGER
}
/**
 * Company Class is Factory. Company can create any type of the Employee.
 *
 * @author Hari
 *
 */
public class Company {
 /**
  * Method to create a Employee.
  *
  * @param employeeType
  * @return
  */
 public static Employee hireEmployee(EmployeeType employeeType) {
  Employee e = null;
  switch (employeeType) {
  case ADMIN:
   e = new Admin();
   break;
  case DEVELOPER:
   e = new Developer();
   break;
  case DEV_MANAGER:
   e = new DevManager();
   break;
  }
  return e;
 }
}

Comments

Popular posts from this blog

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

Cannot complete the install because one or more required items could not be found.

Error While installing Maven in Eclipse Cannot complete the install because one or more required items could not be found.   Software being installed: m2e - Maven Integration for Eclipse 1.4.0.20130601-0317 (org.eclipse.m2e.feature. feature.group 1.4.0.20130601-0317)   Missing requirement: Maven POM XML Editor 1.4.0.20130601-0317 (org.eclipse.m2e.editor.xml 1.4.0.20130601-0317) requires 'bundle org.slf4j.api 1.6.2' but it could not be found   Cannot satisfy dependency:     From: Maven Integration for Eclipse (Editors) 1.4.0.20130601-0317 (org.eclipse.m2e.editor 1.4.0.20130601-0317)     To: bundle org.eclipse.m2e.editor.xml [1.4.0,1.5.0)   Cannot satisfy dependency:     From: m2e - Maven Integration for Eclipse 1.4.0.20130601-0317 (org.eclipse.m2e.feature. feature.group 1.4.0.20130601-0317)     To: org.eclipse.m2e.editor [1.4.0.20130601-0317] Solution : 1. Goto : Help -> Install New Software 2. Add following URL in "Work with:" http:

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