美文网首页
iOS 备忘录模式(简单使用)

iOS 备忘录模式(简单使用)

作者: 印林泉 | 来源:发表于2017-03-08 23:35 被阅读408次
  • 备忘录模式
    设计存储中心,指定存储接口,实现存储机制。
    • 优化存储方案
      统一存储规范,实现灵活多变的存储机制。

FastCoder 本地序列化,转NSData,比对象实现NSCopying存储好

  • 应用,使用场景
    存储UIView的状态,
    数据库回退

备忘录中心

//
//  MementoCenter.h
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "MementoCenterProtocol.h"

@interface MementoCenter : NSObject

/**
 存储备忘录对象

 @param object 值
 @param key 键
 */
+ (void)saveMementoObject:(id<MementoCenterProtocol>)object withKey:(NSString *)key;

/**
 获取备忘录对象

 @param key 键
 @return 值
 */
+ (id)mementoObjectWithKey:(NSString *)key;

@end
//
//  MementoCenter.m
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

#import "MementoCenter.h"

@implementation MementoCenter

+ (void)saveMementoObject:(id)object withKey:(NSString *)key {
    
}

+ (id)mementoObjectWithKey:(NSString *)key {
    return nil;
}

@end

备忘录中心协议,存储的对象必须满足这个协议,才能存储到备忘录中心

//
//  MementoCenterProtocol.h
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

#import <Foundation/Foundation.h>

@protocol MementoCenterProtocol <NSObject>

/**
 获取状态

 @return 状态值
 */
- (id)currentState;

/**
 从某种状态恢复

 @param state 状态值
 */
- (void)recoverFromState:(id)state;

@end

存储对象(苹果)

//
//  Apple.h
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

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

@interface Apple : NSObject<MementoCenterProtocol>

@end
//
//  Apple.m
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

#import "Apple.h"

@implementation Apple

- (id)currentState {
    return self;
}

- (void)recoverFromState:(id)state {
    
}

@end

使用

//
//  ViewController.m
//  LearnMemento
//
//  Created by 印林泉 on 2017/3/8.
//  Copyright © 2017年 ylq. All rights reserved.
//

#import "ViewController.h"
#import "Apple.h"
#import "MementoCenter.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    Apple *apple = [[Apple alloc] init];
    ///save
    [MementoCenter saveMementoObject:[apple currentState] withKey:@"Apple"];
    ///get
    [apple recoverFromState:[MementoCenter mementoObjectWithKey:@"Apple"]];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

相关文章

  • iOS 备忘录模式(简单使用)

    备忘录模式设计存储中心,指定存储接口,实现存储机制。优化存储方案统一存储规范,实现灵活多变的存储机制。 FastC...

  • 备忘录模式(Memento Pattern)

    备忘录模式:如果需要对象能返回之前的状态就使用备忘录模式。 备忘录模式是行为性模式之一。备忘录模式包含原发器(Or...

  • 设计模式之备忘录模式(Memento模式)

    引入备忘录模式 备忘录模式的实例 备忘录模式的分析 引入备忘录模式 我们在使用文本编辑器的时候,一般如果不小心误操...

  • 备忘录模式,是怎么记住状态的?

    备忘录模式,是怎么记住状态的,你知道吗? 在什么情况下,我们可以使用备忘录模式? 备忘录模式(Memento Pa...

  • 2016.06笔记

    iOS设计模式之工厂模式(简单工厂,工厂方法,抽象工厂) 简单工厂:简单工厂模式的工厂类一般是使用静态方法,通过接...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(4)抽象工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

网友评论

      本文标题:iOS 备忘录模式(简单使用)

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