Pro objective c design patterns