Creational DesignPattern

7
Creational Design Patterns Singleton Design Pattern package com.vbr; class SingleObject{ //step1:declare private static reference variable of same class private static SingleObject singleObject=null; //step2: define private constructor private SingleObject(){} //step3: define static factory method having logic of Singleton public static SingleObject getSingleObject(){ //object creation having singleton logic if(singleObject==null) { singleObject=new SingleObject(); } return singleObject; } //step4:override clone() method to prevent the cloning process public Object clone(){ return singleObject; } } class SingletonPatternDemo{ public static void main(String[] args){ SingleObject s1=SingleObject.getSingleObject(); SingleObject s2=SingleObject.getSingleObject(); SingleObject s3=SingleObject.getSingleObject(); System.out.println("hashcode of s1 is : "+s1.hashCode()); System.out.println("hashcode of s2 is : "+s2.hashCode()); System.out.println("hashcode of s3 is : "+s3.hashCode()); SingleObject s4=(SingleObject)s3.clone(); 1

description

Creational Design Patterns

Transcript of Creational DesignPattern

Creational Design PatternsSingleton Design Patternpackage com.vbr;class SingleObject{//step1:declare private static reference variable of same classprivate static SingleObject singleObject=null;//step2: define private constructorprivate SingleObject(){}//step3: define static factory method having logic of Singletonpublic static SingleObject getSingleObject(){//object creation having singleton logicif(singleObject==null){singleObject=new SingleObject();}return singleObject;}//step4:override clone() method to prevent the cloning processpublic Object clone(){return singleObject;}}class SingletonPatternDemo{public static void main(String[] args){SingleObject s1=SingleObject.getSingleObject();SingleObject s2=SingleObject.getSingleObject();SingleObject s3=SingleObject.getSingleObject();System.out.println("hashcode of s1 is : "+s1.hashCode());System.out.println("hashcode of s2 is : "+s2.hashCode());System.out.println("hashcode of s3 is : "+s3.hashCode());SingleObject s4=(SingleObject)s3.clone();System.out.println("hashcode of s4 is : "+s4.hashCode());}}Outputhashcode of s1 is : 3541984hashcode of s2 is : 3541984hashcode of s3 is : 3541984hashcode of s4 is : 3541984

Synchronized Singleton Java Classpackage com.vbr;class SingleObject{//step1:declare private static reference variable of same classprivate static SingleObject singleObject=null;//step2: define private constructorprivate SingleObject(){}//step3: define static factory method having logic of Singletonpublic static synchronized SingleObject getSingleObject(){//object creation having singleton logicif(singleObject==null){singleObject=new SingleObject();}return singleObject;}//step4:override clone() method to prevent the cloning processpublic synchronized Object clone(){return singleObject;}}class SingletonPatternDemo{public static void main(String[] args){SingleObject s1=SingleObject.getSingleObject();SingleObject s2=SingleObject.getSingleObject();SingleObject s3=SingleObject.getSingleObject();System.out.println("hashcode of s1 is : "+s1.hashCode());System.out.println("hashcode of s2 is : "+s2.hashCode());System.out.println("hashcode of s3 is : "+s3.hashCode());SingleObject s4=(SingleObject)s3.clone();System.out.println("hashcode of s4 is : "+s4.hashCode());}}Outputhashcode of s1 is : 3541984hashcode of s2 is : 3541984hashcode of s3 is : 3541984,hashcode of s4 is : 3541984

Factory Method Design Pattern In Factory Method Design Pattern we have 2 types: They are:1) Static Factory Method2) Instance Factory MethodAbstract Factory Design Patternpackage com.infinite;//create Bank interfaceinterface Bank{public String getBankName();}//create concrete classes that implements Bank interfaceclass HDFC implements Bank{private final String BNAME;public HDFC(){BNAME="HDFC BANK";}public String getBankName(){return BNAME;}}class ICICI implements Bank{private final String BNAME;public ICICI(){BNAME="ICICI BANK";}public String getBankName(){return BNAME;}}class SBI implements Bank{private final String BNAME;public SBI(){BNAME="SBI BANK";}public String getBankName(){return BNAME;}}//create FactoryCreator class to get factories of concrete classes by passing an information such as typeclass FactoryCreator{public Bank getBank(String bank){if(bank == null){return null;}if(bank.equalsIgnoreCase("HDFC")){return new HDFC();}else if(bank.equalsIgnoreCase("ICICI")){return new ICICI();}else if(bank.equalsIgnoreCase("SBI")){return new SBI();}return null;}}public class AbstractFactory {public static void main(String[] args){FactoryCreator factoryCreator = new FactoryCreator();Bank bank1=factoryCreator.getBank("HDFC");System.out.println("bank name is : "+bank1.getBankName());Bank bank2=factoryCreator.getBank("ICICI");System.out.println("bank name is : "+bank2.getBankName());Bank bank3=factoryCreator.getBank("SBI");System.out.println("bank name is : "+bank3.getBankName());}}Outputbank name is : HDFC BANKbank name is : ICICI BANKbank name is : SBI BANK

Prototype Design Patternpackage com.infinite;class Emp implements Cloneable{public int id;public String name;public Emp(int id,String name){this.id=id;this.name=name;}public Object clone()throws CloneNotSupportedException{return super.clone();}/*public Emp clone()throws CloneNotSupportedException{return (Emp)super.clone();}*/public String toString(){return id+""+name;}}public class PrototypeDesignPattern {public static void main(String[] args)throws CloneNotSupportedException{Emp emp1 = new Emp(10,"vbr");//Emp emp2 = emp1.clone();Emp emp2 = (Emp)emp1.clone();System.out.println("emp1.id : "+emp1.id+"emp1.name : "+emp1.name);System.out.println("emp2.id : "+emp2.id+"emp2.name : "+emp2.name);}}Outputemp1.id : 10emp1.name : vbremp2.id : 10emp2.name : vbr

Builder Design Patternpackage com.infinite;interface Item{public int price();}class Burger implements Item{public int price(){return 25;}}class Fries implements Item{public int price(){return 15;}}class Drink implements Item{public int price(){return 30;}}class MealBuilder{public int calcPrice(){//builder pattern logicreturn new Burger().price()+new Fries().price()+new Drink().price();}}class SnacksBuilder{public int calcPrice(){return new Fries().price()+new Drink().price();}}public class BuilderDesign {public static void main(String[] args){//complex object1MealBuilder mealBuilder = new MealBuilder();int mealPrice = mealBuilder.calcPrice();System.out.println("Meal price is : "+mealPrice);//complex object2SnacksBuilder snackBuilder = new SnacksBuilder();int snackPrice = snackBuilder.calcPrice();System.out.println("Snack price is : "+snackPrice);}}OutputMeal price is : 70Snack price is : 45

4