美文网首页
Objective-C 原型模式 -- 简单介绍和使用

Objective-C 原型模式 -- 简单介绍和使用

作者: Jackey_Zhou | 来源:发表于2016-12-27 10:52 被阅读12次

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

它主要面对的问题是:“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。

说直白点就是如果有一个对象很复杂, 重新创建要花费很多的代码或者代价
这个时候可以考虑使用原型模式, 当要创建新实例时通过既有的实例复制一份,再修改不一样的地方值

什么时候考虑使用原型模式呢?

1 有很多相关的类, 其行为略有不同, 而且主要差异在于内部属性, 如名称/图像等.

2 需要使用组合(树型)对象作为其他东西的基础, 例如, 使用组合对象作为组件来构建另一个组合对象.

下面用代码说明如何使用

先创建一个Protocol

#import <Foundation/Foundation.h>

@protocol PrototypeCopyProtocol <NSObject>

@required

/**
 复制自己

 @return 返回一个拷贝的对象
 */
- (id)clone;

@end

创建对象模型
Student.h

#import <Foundation/Foundation.h>
#import "PrototypeCopyProtocol.h"

@interface Student : NSObject <PrototypeCopyProtocol>

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *age;
@property (nonatomic, strong) NSString *score;
@property (nonatomic, strong) NSString *address;

#pragma mark - PrototypeCopyProtocol method
- (id)clone;

@end

Student.m

#import "Student.h"

@implementation Student

- (id)clone {
    
    Student *stu = [[[self class] alloc] init];
    
    stu.name    = self.name;
    stu.age     = self.age;
    stu.score   = self.score;
    stu.address = self.address;
    
    return stu;
}

@end

下面是Controller中使用:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建第一个学生实例
    Student *stu1 = [[Student alloc] init];
    
    stu1.name  = @"Jackey";
    stu1.age   = @"18";
    stu1.score = @"90";
    stu1.score = @"重庆";
    
    //创建第二个学生实例
    Student *stu2 = [stu1 clone];
    
    stu2.name = @"Franky";
    
}

相关文章

  • Objective-C 原型模式 -- 简单介绍和使用

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式是一种创建型设计模式,P...

  • iOS 原型模式

    原型模式是非常简单的一种设计模式, 在多数情况下可被理解为一种深复制的行为。在Objective-C中使用原型模式...

  • Objective-C 装饰模式--简单介绍和使用

    装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包...

  • Objective-C 外观模式--简单介绍和使用

    外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易...

  • 06.原型模式(创建型)

    创建型模式-原型模式 一、相关介绍 原型模式定义:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象...

  • Builder模式及原型模式

    本文主要内容 Builder模式定义 Builder模式 原型模式定义 原型模式 本文介绍两种简单的设计模式,Bu...

  • 再说设计模式-原型模式

    定义 原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是由于简单,使用场景才...

  • 组合使用构造函数模式和原型模式创建对象

    介绍 创建自定义类型的最常见方式,就是组合使用构造函数模式和原型模式。构造函数模式用于定义实例属性,而原型模式用于...

  • Java设计模式之原型模式

    原型模式 模式介绍 模式的定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 模式的使用场景 1...

  • 原型模式

    原型模式 原型模式的定义 原型模式(Prototype Pattern)的简单程度仅次于单例模式和迭代器模式。正是...

网友评论

      本文标题:Objective-C 原型模式 -- 简单介绍和使用

      本文链接:https://www.haomeiwen.com/subject/cuwsvttx.html