iOS设计模式 - 单例-阿里云开发者社区

开发者社区> goodboy_heyang> 正文

iOS设计模式 - 单例

简介:
+关注继续查看

备注:只能通过类的类方法才能创建单例类的实例,[[类名 alloc]init]创建实例没有用的。

原理图

说明

1. 单例模式人人用过,严格的单例模式很少有人用过

2. 严格的单例模式指的是无法通过常规的 alloc init 方法来生成对象,派生出来的子类也不能产生出对象,而只能通过单例的方法获取到对象

源码

https://github.com/YouXianMing/SingletonPattern

复制代码复制代码
//
// Singleton.h
// SingletonPattern
//
// Created by YouXianMing on 15/8/6.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Singleton : NSObject

+ (Singleton *)sharedInstance;

@end
复制代码复制代码复制代码复制代码
//
// Singleton.m
// SingletonPattern
//
// Created by YouXianMing on 15/8/6.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//

#import "Singleton.h"

#define STR_SINGLETON @"STR_SINGLETON"

static Singleton *_sharedSingleton = nil;

@implementation Singleton

+ (Singleton *)sharedInstance {

 static dispatch_once_t onceToken;
 dispatch_once(&onceToken, ^{
 
 _sharedSingleton = (Singleton *)STR_SINGLETON;
 _sharedSingleton = [[Singleton alloc] init];
 });

 return _sharedSingleton;
}

- (instancetype)init {
 
 NSString *string = (NSString *)_sharedSingleton;
 if ([string isKindOfClass:[NSString class]] && [string isEqualToString:STR_SINGLETON]) {
 
 self = [super init];
 if (self) {
 
 }
 
 return self;
 
 } else {
 
 return nil;
 }
}

@end
复制代码复制代码

细节

保证只能从shareInstance方法获取实例的技巧

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Spring的简易SSO设计
通常稍微规模大一些的企业,内部已经有很多的应用系统,多个系统整合首先要解决的便是“统一登录(SSO)”问题,之前写过一篇 利用Membership实现SSO(单点登录) ,java环境下已经有一些开源的成熟sso项目(比如CAS),但如果觉得CAS太麻烦,想自己再造轮子重复发明一个,可以参考下面的思...
1024 0
IOS设计模式第二篇之单例设计模式
现在我们的组件已经有组织了。你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍。 这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点。
819 0
IOS设计模式第九篇之备忘录模式
版权声明:原创作品,谢绝转载!否则将追究法律责任。 备忘录模式捕获和具体化对象的内部状态。换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的。 怎么用备忘录设计模式 在Viewcontroller的实现文件里添加下面方法: - (void)sa...
865 0
设计模式之——单例模式
单例模式是我们最常提到的设计模式了,也经常被我们认为是最“简单”的,但想要用好、用对单例模式,还是有许多需要注意的地方。 饿汉法 顾名思义,饿汉式就是第一次引用该类的时候就创建实例对象,而不管是否需要。
1783 0
IOS设计模式第七篇之观察者设计模式
版权声明:原创作品,谢绝转载!否则将追究法律责任。 观察者设计模式 在观察者设计模式里面,一个对象通知其他的对象一些状态的改变。涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式。这个设计模式经常被用来通知感兴趣的对象当一个属性被改变时候。
740 0
iOS 的MVC设计模式
MVC是所有面向对象程序设计语言都应该遵守的规范,MVC思想是将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller·(控制器),它们以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。
475 0
30个非常精美的 iOS App 网站设计案例
  我们经常能看到 iOS App 会有一个相应的网站,这个网站中会包含这款 App 的详细介绍以及激励用户去下载使用的相关信息。今天这篇文章收集了30个非常精美的 iOS App 网站设计案例,如果你也要做一个这样的网站,相信下面这些优秀案例会带给您灵感。
895 0
c# 设计模式之单例模式学习
c#的设计模式有很多种,当然也可以说语言的设计模式有很多种(23种),单例模式应该是其中最简单的一种,但是不要因为简单而小看他,否则最后后悔的肯定是你 单例模式包括懒汉模式(还有多线程下的锁定)、恶汉模式 下面写一下饿汉模式的实现原理:  public Class Singleton { ...
928 0
243
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载