fs_*_*gre 3 objective-c factory-pattern ios
我一直在网上试图了解工厂方法是什么,但我没有找到任何显示具体例子的简单例子.我简要介绍了其中一本书,但它没有展示一个例子,也没有解释它们是什么"类方法通常用作工厂方法".
1- Objective-C中工厂方法的语法和用法是什么? 这是我找到的最接近的答案,但是当我在评论中尝试这个例子作为答案时,我收到一条消息说我不能打电话给超级.在这个问题中,我更关注工厂方法的实现语法.
2-工厂方法在其他语言中是什么叫做构造函数?
3-工厂方法与单身人士相比如何?
来自Apple文档:
它们在一个步骤中组合分配和初始化,并返回创建的对象
单身人士不是吗?
在下面的单例示例中,我们可以说类方法sharedData是一个工厂方法吗?
.m文件
#import "SingletonModel.h"
@implementation SingletonModel
static SingletonModel *sharedData;
- (id) init {
if (self = [super init]) {
// custom initialization
}
return self;
}
// is this a factory method?
+(SingletonModel*) sharedData
{
if (!sharedData) {
sharedData = [[SingletonModel alloc]init];
}
return sharedData;
}
@end
Run Code Online (Sandbox Code Playgroud)
人们可以对不同的事物使用相同的术语.通常通过调用创建一个对象
MyClass* object = [[MyClass alloc] initWithParameters... ];
Run Code Online (Sandbox Code Playgroud)
你知道你得到了MyClass类的一个对象(在Objective C中并不完全正确,但主要是).现在让我们说MyClass有几个子类.作为调用者,您不知道也不关心这些子类.如果object是MySubClass类,你就不会知道也不会关心.但MyClass的实施者关心.他或她创建了可以更好地用于不同目的的子类.所以他创建了一个工厂方法,你可以这样称呼它:
MyClass* object = [MyClass objectForParameters:... ];
Run Code Online (Sandbox Code Playgroud)
类方法objectForParameters查看参数并决定返回哪种对象.代码可能看起来像
if (...)
return [[MySubClass1 alloc] initWithParameters:...];
else if (...)
return [[MySubClass2 alloc] initWithParameters:...];
else
return [[MySubClass3 alloc] initWithParameters:...];
Run Code Online (Sandbox Code Playgroud)
你不知道你得到了什么样的对象,但是你知道你可以将它视为属于MyClass类.这种方法通常被称为"工厂方法".这是一个为您制作物品的工厂.它决定你得到哪种对象,而不是你.
归档时间: |
|
查看次数: |
3311 次 |
最近记录: |