单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
有什么用?
- 1.实现资源共享。如CLLocationManager,一个系统只有一个GPS硬件,所以相应的类只应有一个实例.
- 2.统一管理。如各种manager,NSURLSession,和现实生活类似,如果同一件事有多个管理者,会出现管理上的紊乱.
- 3.类之间的通信,传值。如NSUserDefaults,不同的对象使用的是同一个userDefaults,那么这些对象就可以通过userDefaults这个中介来实现通信.
- 4.节省资源。很明显,因为只会生成一个对象,而不是多个对象.
怎么做?
- 1.声明一个单例对象的静态实例,并初始化为nil
- 2.声明一个类的工厂方法,确保该方法只会生成一个实例。通常该方法以sharedXXX命名
- 3.防止通过其他方法生成新的实例。如copy方法
- 4.线程安全。如果通过多个线程同时调用构造方法,则还是可能生成多个实例
示例代码
+ (AccountManager *)sharedManager
{
static AccountManager *sharedAccountManagerInstance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
sharedAccountManagerInstance = [[self alloc] init];
});
return sharedAccountManagerInstance;
}
C/S B/S 以及相关概念
服务器(Server)
一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器(能使用户在其它计算机访问文件),数据库服务器和Web服务器。也指运行以上软件的计算机。
网页服务器(Web server)
负责提供网页的服务器,通过HTTP协议传给客户端特定的数据
虽然每个网页服务器程序有很多不同,但有一些共同的特点:每一个网页服务器程序都需要从网络接受HTTP请求,然后提供HTTP回复给请求者。HTTP回复一般包含一个HTML文件,有时也可以包含纯文本文件、图像或其他类型的文件。
一般来说这些文件都存储在网页服务器的本地文件系统里,而URL和本地档名都有一个阶级组织结构的,服务器会简单的把URL对照到本地文件系统中。当正确安装和设置好网页服务器软件,服务器管理员会从服务器软件放置文件的地方指定一个本地路径名为根目录。
现在市场最流行的Web server是Apache(阿帕奇服务器)
客户端(Client)
客户端(Client),是指与服务器相对应,为客户提供本地服务的程序。一般安装在普通的用户机上,需要与服务端互相配合运行。互联网发展以后,较常用的客户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。
浏览器(Browser)
网页浏览器(英语:web browser,常被称为浏览器(browser))是一种用于检索并展示万维网信息资源的应用程序。
C/S
主从式架构 (Client–server model) 或客户端-服务器(Client/Server)结构简称C/S结构,是一种网络架构,它把客户端 (Client) (通常是一个采用图形用户界面的程序)与服务器 (Server) 区分开来。每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。有很多不同类型的服务器,例如文件服务器、游戏服务器、Web服务器等。
B/S
浏览器-服务器(Browser/Server)结构,简称B/S结构,与C/S结构不同,其客户端不需要安装专门的软件,只需要浏览器即可,浏览器通过Web服务器与数据库进行交互,可以方便的在不同平台下工作;服务器端可采用高性能计算机,并安装Oracle、Sybase、Informix等大型数据库。B/S结构简化了客户端的工作,它是随着Internet技术兴起而产生的,对C/S技术的改进,但该结构下服务器端的工作较重,对服务器的性能要求更高。