工厂方法大家都很熟悉了,简单概括就是专门创建几个类来创建业务逻辑对象,它专注于让子类决定创建什么对象。
工厂方法在以下情形下会用到:编译器无法准确预期要创建对象的类;类想让其子类决定在运行时创建什么。要实现这一目标,就需要有一个产品父类和生成器父类。
核心代码如下:
- (void) loadCanvasViewWithGenerator:(CanvasViewGenerator *)generator //CanvasViewGenerator是父类生成器,当需要创建对象的时候传入相应的生成器
{
[canvasView_ removeFromSuperview];
CGRect aFrame = CGRectMake(0, 0, 320, 436);
CanvasView *aCanvasView = [generator canvasViewWithFrame:aFrame]; //创建对象,子类覆盖此方法
[self setCanvasView:aCanvasView];
NSInteger viewIndex = [[[self view] subviews] count] - 1;
[[self view] insertSubview:canvasView_ atIndex:viewIndex];
}