【iOS7的一些总结】15、单例设计模式

简介: 1、基本概念 所谓单例,即某一个类始终只能返回一个实例,也可以理解为类本身就是一个实例。单例类通常适合作为某些保存全局应用信息的全局对象,以及部分耗费大量系统资源的重量级对象。

1、基本概念

所谓单例,即某一个类始终只能返回一个实例,也可以理解为类本身就是一个实例。单例类通常适合作为某些保存全局应用信息的全局对象,以及部分耗费大量系统资源的重量级对象。通过这种模式可以更简洁地涉及代码,或者提高应用的性能。常用的单例类有NSFileManager、NSUserDefault等。


2、创建单例涉及模式的基本步骤

(1)创建单例对象的静态实例,初始化为nil;

(2)创建类的类工厂方法,只有在这个类的实例为nil时生成一个该类的实例;

(3)重写allocWithZone方法,防止在alloc时产生另一个对象;

(4)实现NSCopy协议,覆盖release、autorelease、retain、retainCount方法以保证单例的状态;

(5)多线程环境中,使用@synchronized关键字,确保静态实例正确创建和初始化。

以下是一个单例类的定义事例:

//
//  UserContext.h
//  SingletonDemo
//
//  Created by YinWenjie on 14-12-11.
//  Copyright (c) 2014年 YinWenjie. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface UserContext : NSObject

@property (nonatomic, copy) NSString *strName;
@property (nonatomic, copy) NSString *strAddr;

+ (id)shareContext;

@end
//
//  UserContext.m
//  SingletonDemo
//
//  Created by YinWenjie on 14-12-11.
//  Copyright (c) 2014年 YinWenjie. All rights reserved.
//

#import "UserContext.h"

static UserContext *singletonInstance = nil;

@implementation UserContext

+ (id)shareContext
{
    @synchronized(self)
    {
        if (singletonInstance == nil)
        {
            singletonInstance = [[[self class] alloc] init];
        }
    }
    return singletonInstance;
}

#pragma mark - Make sure that only one instance is created
+ (id)allocWithZone:(struct _NSZone *)zone
{
    if (singletonInstance == nil)
    {
        singletonInstance = [super allocWithZone:zone];
    }
    return singletonInstance;
}

- (id)copyWithZone:(struct _NSZone *)zone
{
    return singletonInstance;
}

- (id)retain
{
    return singletonInstance;
}

- (oneway void)release
{
    
}

- (id)autorelease
{
    return singletonInstance;
}

- (NSUInteger)retainCount
{
    return UINTMAX_MAX;
}

@end


目录
相关文章
|
设计模式
单例设计模式步骤
单例设计模式步骤
65 1
|
设计模式 安全 测试技术
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
254 0
|
设计模式 消息中间件 安全
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(二)
多线程编程设计模式(单例,阻塞队列,定时器,线程池)(二)
126 1
|
设计模式 安全 Java
【设计模式】2、设计模式分类和单例设计模式
【设计模式】2、设计模式分类和单例设计模式
107 0
|
设计模式 Java
26、Java 简单实现单例设计模式(饿汉式和懒汉式)
26、Java 简单实现单例设计模式(饿汉式和懒汉式)
120 2
|
设计模式 安全 Java
在Java中即指单例设计模式
在Java中即指单例设计模式
78 0
|
9月前
|
设计模式 缓存 安全
「全网最细 + 实战源码案例」设计模式——单例设计模式
单例模式是一种创建型设计模式,确保一个类在整个程序运行期间只有一个实例,并提供一个全局访问点来获取该实例。它常用于控制共享资源的访问,如数据库连接、配置管理等。实现方式包括饿汉式(类加载时初始化)、懒汉式(延迟加载)、双重检查锁、静态内部类和枚举单例等。其中,枚举单例最简单且安全,能有效防止反射和序列化破坏。
144 7
|
11月前
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
142 2
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
设计模式 存储 安全
设计模式——设计模式介绍和单例设计模式
饿汉式(静态常量)、饿汉式(静态代码块)、懒汉式(线程不安全)、懒汉式(线程安全,同步方法)、懒汉式(线程不安全,同步代码块)、双重检查(推荐,线程安全、懒加载)、静态内部类(推荐)、枚举(推荐)
设计模式——设计模式介绍和单例设计模式

热门文章

最新文章