Role
# name:String# occupation:String
+ getOccupation():String+ introduce():String
Cook
+ introduce():String
Craftsman
CraftsmanFactory
+ Produce(name):Role
Architect
DoctorFactory
Enchanter
ArchitectFactory
RoleFactory
CookFactory
EnchanterFactory
Doctor