Abstract view factory