简单工厂模式
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
组成结构:
工厂(Factory)角色:接受客户端的请求,通过请求负责创建相应的产品对象。
抽象产品(Abstract Product)角色:是工厂模式所创建对象的父类或是共同拥有的接口。可是抽象类或接口。
具体产品(ConcreteProduct)对象:工厂模式所创建的对象都是这个角色的实例。
优缺点
实现了客户端和具体实现类的解耦。
不方便扩展子工厂。
增加了客户端的复杂程度。
举个栗子🌰
一个简单的objective-c实现,WNCat和WNDog继承自WNAnimal,通过向WNAnimalFactory工厂传人类型来创建不同类的实例
typedef enum
{
WNAnimalTypeCat,
WNAnimalTypeDog
}WNAnimalType;
@interface WNAnimal : NSObject
@end
@interface WNCat : WNAnimal
@end
@interface WNDog : WNAnimal
@end
@interface WNAnimalFactory : NSObject
+ (__kindof WNAnimal *)produceAnimalWithType:(WNAnimalType)type;
@end
@implementation WNAnimalFactory
+ (__kindof WNAnimal *)produceAnimalWithType:(WNAnimalType)type
{
__kindof WNAnimal *animal;
switch (type) {
case WNAnimalTypeCat:
animal = [[WNCat alloc] init];
break;
case WNAnimalTypeDog:
animal = [[WNDog alloc] init];
break;
default:
break;
}
return animal;
}
Tips
简单工厂不属于23种GOF设计模式之一
网友评论