Finish chapter 4 abstract factory pattern ingredient code and add my own homecooked shape factory method code (factory method, not abstract factory).