iOS设计模式-抽象工厂

抽象工厂

抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

抽象工厂的使用场景

抽象工厂的使用场景与工厂方法的使用场景类似,参照iOS设计模式-工厂方法

抽象工厂在CocoaTouch中的应用

NSNumber实例的方式完全符合抽象工厂模式,具体参照iOS设计模式-工厂方法

抽象工厂方法在Objective-C中的实现

1、创建抽象工厂父类,并提供抽象工厂接口。

//BrandingFactory.h
@interface BrandingFactory : NSObject{
}

+ (BrandingFactory*)factory;
- (UIView*)brandedView;

//BrandingFactory.m
+ (BrandingFactory*)factory{
//根据不同条件返回不同的工厂对象
#if defined (USE_ACME)
  return [[AcmeBrandingFactory alloc] init];
#elif defined (USE_SIERRA)
  return [[SierraBrandingFactory alloc] init];
#else
  return nil;
#endif
}

- (UIView*)brandedView{
  return nil;
}

2、创建各个具体的工厂类重写除工厂方法以外的其他方法(即重写brandedView方法,不需要重写factory方法)
3、调用

BrandingFactory *factory = [BrandingFactory factory];
UIView *view = [factory brandedView];

工厂方法与抽象工厂的对比

工厂方法抽象工厂
通过类继承创建抽象产品通过对象组合创建抽象产品
创建一种产品创建多系列产品
子类化创建者并重载工厂方法以及创建新产品必须修改父类的接口才能支持新的产品


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值