单例:用AFNetworking封装举例

创建单例的方式

1 import AFNetworking
2
3 class NetworkTools: AFHTTPSessionManager {
4
5     //let是线程安全的
6     //使用单例实例只需要拿到NetworkTools这个类取出来这个常量属性就可以拿到单例
7     static let shareInstance: NetworkTools = NetworkTools()
8
9 }

具体使用方式

 1 import UIKit
 2
 3 class ViewController: UIViewController {
 4
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         //编译运行之后以下两个单例地址是一致的,
 8         print(NetworkTools.shareInstance)
 9         print(NetworkTools.shareInstance)
10     }
11
12     override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
13         //运行编译之后以下两个单例地址是不一致的,使用单例必须取到常量属性,直接使用Networking则是又创建了一个实例
14         print(NetworkTools.shareInstance)
15         print(NetworkTools())
16     }
17 }

单例主要分两种:

1.通过shareInstance拿到的永远是一个实例

2.不管怎样,拿到都永远是一个实例

时间: 2024-11-05 21:47:29

单例:用AFNetworking封装举例的相关文章

java单例设计模式总结及举例

* 设计模式:前人总结出来的经验,被后人直接拿来使用. * 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用. * 分析: * 1.用户只能有一个对象 * 2.全局的访问点:得到的对象就是全局的访问点. 如何做到全局?让static去修饰 * 3.如何提供出去? * 4.供大家使用?--单例的功能 * 单例类的作用: * 1.可以实现两个对象之间的传值 * 2.可以在全局范围内调用很多的功能. * 好处:可以让两个对象在完全没有关系的前提下,实现值的传递,

Spring容器-ApplicationContext的单例设计

Spring容器-ApplicationContext的单例设计 每次通过new创建一个ApplicationContext容器,都会执行refresh方法,看源代码了解到这个refresh方法会重新加载配置文件,并且这个创建的容器对象持有一个所有singleton类型bean的map集合,从而实现单例,而且这个map对象的生命周期和容器对象的生命周期是一样的 如果我们每次都通过new一个容器对象,那么每次都要重新加载配置文件,都要重新生成这个singleton bean的集合,这样所谓的单例就

Volley自定义Request及使用单例封装RequestQueue

一.自定义Request Volley的所有的请求的超类型是Resuest,所有我们常用的请求都是这个类的子类,那么我们自定义View肯定也是基于这个类的. 案例: 1 package com.zhy.velloydemo; 2 3 import java.io.UnsupportedEncodingException; 4 import java.util.HashMap; 5 import java.util.Map; 6 7 import com.android.volley.AuthFa

封装、继承、单例

封装 package com.qianfeng.test; //封装性:(根据对属性的封装来说明):把对成员变量的访问进行私有化,通过一个公共的方法间接的实现访问. //好处:提高了代码的安全性,增加了代码的可读性和复用性. public class Demo2 { public static void main(String[] args) { /* * 开枪射击 */ Gun gun = new Gun(); //我们把程序中出现的不符合逻辑的数据称为脏数据 /* * 原因:直接将脏数据赋值

Flutter中的单例以及网络请求库的封装

https://zhuanlan.zhihu.com/p/53498914 Flutter中的单例以及网络请求库的封装 ClassNotFound 程序员 25 人赞同了该文章 Why?为什么需要单例 在Android中我们经常使用OkHttp来进行网络请求,但我们并不希望每次都创建一个OkHttpClient:亦或有些资源初始化非常麻烦,消耗性能,我们希望一次创建,处处使用.这时候就需要单例.Dio作为flutter中的OkHttp,我们也可以用单例模式对其进行封装. How?如何用dart实

Java中的单例设计模式举例

本例中通过将构造函数私有化的方式将实例化对象的代码放到类内部的静态函数中,从而实现单例设计模式. class Singleton { static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return Singleton.instance; } public void func() { System.out.println("Hi t

C# 创建单例窗体封装

在制作Winform程序时,有时会点击按钮弹出一个form窗体,即点击按钮事件中会创建一个新的form窗体,为了无论点击按钮多少次都只显示同样的form窗体 ,以下为一个创建单例窗体的封装类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SetWhiteList { /// <summary

AFNetworking封装-项目使用

本篇博客是接着上一篇AFNetworking源码解析的后续,如果想对AFNetworking源码有所了解. 请读一下https://www.cnblogs.com/guohai-stronger/p/9191497.html. 这篇博客主要是对AFNetworking代码进行封装,也是自己在实际项目中所使用过的(对中小型企业或者项目)可直接使用,也会在github上传(偷偷窃喜一下,一直想在github上有所项目,一直没有时间),趁着端午几天有时间,给github贡献点自己力量.本篇读下来大约1

iOS 中的单例设计模式

单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单例在那个文件下都能取得到. 通过单例设计模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节省系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的选择. 下面来点实在的,创建单例代码上 方法1:基于线程安全创建一个单例 .h做一下声明 + (id)