1. 工厂模式
1.1 简单工厂模式
创建同一系列的产品,由工厂内部根据所传参数决定创建的具体产品类型.
如,写一个创建水果的工厂
+ (Fruits *)fruitsFactory:(FruitsType)type;
工厂内根据所传水果类型 type 来创建不同的水果类
- (Fruits *)fruitsFactory:(FruitsType)type
{
// 创建空的对象.在工厂方法里面进行水果的制造
Fruits*fruits =nil;
switch(type) {
case Apple:
fruits = [[Apple alloc]init];
break;
case Orange:
fruits = [[Orange alloc]init];
break;
case Banana:
fruits = [[Banana alloc]init];
default:
break;
}
return fruits;
}
1.2 抽象工厂
简单工厂中,代码逻辑都是在工厂类中处理,耦合度太高,扩展性也低.因此,可以把共同的抽取出来做一个基类,不同的分别实现.
如,做三个 view 分别是红黄蓝 都设为半透明
写一个基类
@interfaceViewFactory :UIView
+ (ViewFactory *)createView;
- (void)changeView;
@end
@implementation ViewFactory
+ (ViewFactory *)createView
{
return nil;
}
- (void)changeView
{
self.alpha=.5f;
}
@end
然后三个继承基类的分别在 .m 中实现
@implementation RedViewFactory
+ (ViewFactory*)createView
{
ViewFactory * redView = [ViewFactory new];
redView.backgroundColor = [UIColor redColor];
returnredView;
}
@end
@implementation YellowViewFactory
+ (ViewFactory*)createView
{
ViewFactory* yellowView = [ViewFactory new];
yellowView.backgroundColor = [UIColor yellowColor];
return yellowView;
}
@end
@implementation BlueViewFactory
+ (ViewFactory*)createView
{
ViewFactory * blueView = [ViewFactory new];
blueView.backgroundColor = [UIColor blueColor];
return blueView;
}
@end
调用时,可以
ViewFactory * redView = [RedViewFactory createView];
redView.frame=CGRectMake(50.f,100.f,self.view.frame.size.width-100.f,50.f);
[redView changeView];
[self.view addSubview:redView];
2. 外观模式
封装,隐藏实现细节.简化流程,解耦,简化操作逻辑。
适用场景:
复杂的子系统,改进使用操作类来操作子系统,通过使用操作类来启用子系统功能.
不关心逻辑,只要结果.
例:老板要采购员去买进电脑,只需要负责给采购员多少钱,而不需要知道哪个型号的电脑买多少台,如何来搭配. 采购员自己根据情况来选择 戴尔 联想 惠普的个买多少台
3. 责任链模式
个人理解的,就类似于公司中打太极,互相推脱责任
主要是用于发送者和接收者之间解耦,发送者只要把消息发送出去,等会回复即可
例:发现一个bug,问张三,张三去找李四;问李四,李四去找王五;问王五,王五去找六...
网友评论