• Many architectures start with Factory method, then evolve to AF, Prototype, Builder
  • Builder makes complex objects step-by-step. AF makes families of related products. Builder returns the object after all steps are complete. AF returns its object at once.
  • AF classes are often made with Factory Method/Prototype
  • AF can be used instead of Facade to hide classes
  • AF and Bridge can be used together, if you have abstractions which will work only with some real classes.
  • AF, Builder, Prototype can be made with Singleton
//--- OUTPUT
/*
   Factory 1 constructed
    • Product A1 constructed
    • Product B1 constructed
       • Doing A1 operation
       • Doing B1 operation
    • Product A1 destructed
    • Product B1 destructed
   Factory 1 destructed
   Factory 2 constructed
    • Product A2 constructed
    • Product B2 constructed
       • Doing A2 operation
       • Doing B2 operation
    • Product A2 destructed
    • Product B2 destructed
   Factory 2 destructed
*/