package Ġfactory method Ċ Ċ /** Ċ Ġ* Ġ@ author Ġr ana ad ity a Ċ Ġ*/ Ċ interface ĠBook Ġ{ ĊĠĠĠ Ġfun Ġget Info () ĊĠĠĠ Ġfun Ġorder () ĊĠĠĠ Ġfun Ġrate () Ċ } Ċ Ċ enum Ġclass ĠGen re Ġ{ ĊĠĠĠ ĠS CI ENCE , ĠL ITER ATURE Ċ } Ċ Ċ /** Ċ Ġ* ĠFactory ĠMethod Ġdefines Ġan Ġinterface Ġfor Ġcreating Ġobjects , Ċ Ġ* Ġbut Ġlets Ġsubclasses Ġdecide Ġwhich Ġclasses Ġto Ġinstantiate Ċ Ġ* Ċ Ġ* Ġthese Ġmethods Ġare Ġusually Ġcalled Ġwithin ĠTemplate ĠMethod Ċ Ġ* Ċ Ġ* ĠA ĠFactory ĠMethod Ġen forces Ġthat Ġencaps ulation , Ġand Ġallows Ġan Ġobject Ċ Ġ* Ġto Ġbe Ġrequested Ġwithout Ġin ex tric able Ġcoup ling Ġto Ġthe Ġact Ġof Ġcreation . Ċ Ġ*/ Ċ class ĠBook Factory Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Book ( genre : ĠGen re ): ĠBook Ġ= Ġwhen Ġ( genre ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen re . SCI ENCE Ġ-> Ġobject Ġ: ĠBook Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtitle Ġ= Ġ" Science Ġbook Ġ! " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Info () Ġ= Ġprintln ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġorder () Ġ= Ġprintln (" Order Ġ$ title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrate () Ġ= Ġprintln (" Rate Ġfor Ġ$ title ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠGen re . L ITER ATURE Ġ-> Ġobject Ġ: ĠBook Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtitle Ġ= Ġ" L iter ature Ġbook Ġ! " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Info () Ġ= Ġprintln ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġorder () Ġ= Ġprintln (" Order Ġ$ title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrate () Ġ= Ġprintln (" Rate Ġfor Ġ$ title ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }