import Ġorg . junit . Test Ċ Ċ interface ĠFactory Ġ{ ĊĊĠĠĠ Ġfun Ġman ufacture (): ĠProduct Ċ Ċ } Ċ Ċ interface ĠProduct Ġ{ ĊĊĠĠĠ Ġfun Ġaction () Ċ Ċ } Ċ Ċ class ĠFactory A Ġ: ĠFactory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġman ufacture (): ĠProduct Ġ= ĠProduct A () Ċ Ċ } Ċ Ċ class ĠFactory B Ġ: ĠFactory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġman ufacture (): ĠProduct Ġ= ĠProduct B () Ċ Ċ } Ċ Ċ class ĠProduct A Ġ: ĠProduct Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Product A ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠProduct B Ġ: ĠProduct Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Product B ") ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠTest Factory Method Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Factory Method () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory A Ġ= ĠFactory A () ĊĠĠĠĠĠĠĠ Ġfactory A . man ufacture (). action () ĊĊĠĠĠĠĠĠĠ Ġval Ġfactory B Ġ= ĠFactory B () ĊĠĠĠĠĠĠĠ Ġfactory B . man ufacture (). action () ĊĠĠĠ Ġ} Ċ Ċ }