@interface Director:NSObject - (void)construct:(Builder *)builder @end
@interface Builder:NSObject - (Product *)createProduct; @end
@interface Product:NSObject @end
Builder *builder = [[Builder alloc] init]; Director *director = [[Director alloc] init]; [director construct:builder]; Product *product = [builder createProduct];