143jpg abstract factory pattern