package Ġcom . eric amp ire . design Ċ Ċ /** Ċ Ġ* ĠThe Ġabstract Ġfactory Ġallow Ġthe Ġcreation Ġof Ġa Ġfamily Ġof Ġobject Ġwithout Ġspecifying Ġthe Ċ Ġ* Ġreal Ġclass Ċ Ġ* Ċ Ġ* Ġ 1 . ĠWe Ġfirst Ġcreate Ġan Ġinterface Ġfor Ġeach Ġfamily Ġof Ġobject , Ġand Ġall Ġclasses Ġfor Ġthat Ġfamily Ġmust Ċ Ġ* Ġimplement Ġthat Ġinterface Ġand Ġso Ġon Ċ Ġ* Ċ Ġ* Ġ 2 . ĠWe Ġcreate Ġan ĠAbstract ĠFactory Ġthat Ġcontains Ġlist Ġof Ġfactory Ġmethod Ġfor Ġeach Ġfamily Ċ Ġ* Ċ Ġ* Ġ 3 . ĠCreate Ġconcrete Ġfactory Ġresponsible Ġfor Ġobjects Ġfor Ġthe Ġspecific Ġfamily Ċ Ġ*/ ĊĊ Ċ /** Ċ Ġ* ĠThe Ġ[ Button ] Ġinterface Ġrepresent Ġthe Ġfirst Ġfamily Ġof Ġobject Ċ Ġ*/ Ċ interface ĠButton Ġ{} Ċ class ĠWindows Button Ġ: ĠButton Ġ{} Ċ class ĠLinux Button Ġ: ĠButton Ġ{} ĊĊ Ċ /** Ċ Ġ* ĠThe Ġ[ CheckBox ] Ġinterface Ġrepresent Ġthe Ġsecond Ġfamily Ġof Ġobject Ċ Ġ*/ Ċ interface ĠCheckBox Ġ{} Ċ class ĠWindows CheckBox Ġ: ĠCheckBox Ġ{} Ċ class ĠLinux CheckBox Ġ: ĠCheckBox Ġ{} ĊĊ Ċ /** Ċ Ġ* ĠThe Ġ[ Gui Factory ] Ġinterface Ġis Ġthe Ġabstract Ġcontains Ġthe Ġlist Ġof Ġall Ġfactory Ġmethod Ċ Ġ* Ġfor Ġeach Ġfamily Ċ Ġ*/ Ċ interface ĠGui Factory Ġ{ ĊĠ Ġfun Ġcreate Button (): ĠButton ĊĠ Ġfun Ġcreate CheckBox (): ĠCheckBox Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ Windows Factory ] Ġis Ġresponsible Ġfor Ġcreation Ġof Ġthe Ġcomponents Ġfrom Ġthe Ċ Ġ* Ġwindows Ġfamily Ċ Ġ*/ Ċ class ĠWindows Factory Ġ: ĠGui Factory Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Button (): ĠButton Ġ{ ĊĠĠĠ Ġreturn ĠWindows Button () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate CheckBox (): ĠCheckBox Ġ{ ĊĠĠĠ Ġreturn ĠWindows CheckBox () ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ Linux Factory ] Ġis Ġresponsible Ġfor Ġcreation Ġof Ġthe Ġcomponents Ġfrom Ġthe Ċ Ġ* Ġlinux Ġfamily Ċ Ġ*/ Ċ class ĠLinux Factory Ġ: ĠGui Factory Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Button (): ĠButton Ġ{ ĊĠĠĠ Ġreturn ĠLinux Button () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate CheckBox (): ĠCheckBox Ġ{ ĊĠĠĠ Ġreturn ĠLinux CheckBox () ĊĠ Ġ} Ċ } ĊĊĊ Ċ class ĠClient ( private Ġval Ġfactory : ĠGui Factory ) Ġ{ ĊĠ Ġfun Ġinit () Ġ{ ĊĠĠĠ Ġval Ġbutton : ĠButton Ġ= Ġfactory . create Button () ĊĠĠĠ Ġval ĠcheckBox : ĠCheckBox Ġ= Ġfactory . create CheckBox () ĊĠ Ġ} Ċ }