我们在工作中使用文件NSFileManager上课时间,创建发现1对象,此2同样的对象地址:

  1. NSFileManager *file1=[NSFileManager defaultManager];
  2. NSFileManager *file2=[NSFileManager defaultManager];
  3. NSLog(@"%@,%@",file1,file2);

核心是:这个类的defaultManager方法利用的是一种单例模式,即仅仅要这个程序还在执行。那么整个执行期间仅仅能存在1个单例,即1个实例对象。

怎样实现的呢?我们模拟一下。

(1)首先在Person.h中声明一个方法。

  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface Person : NSObject
  4.  
  5. +(Person *)defaultPerson;
  6. @end

(2)然后在Person.m中实现(关键)

  1. #import "Person.h"
  2.  
  3. @implementation Person
  4. //利用静态变量创建单例模式
  5. //静态变量是仅仅有当整个程序结束执行时才会release释放
  6. static Person * person=nil;
  7.  
  8. //该函数的作用是,当类调用该方法时,始终仅仅返回同一个对象,即仅仅创建1个对象。假设创建其它对象,它们也是相同地址
  9. +(Person *)defaultPerson{
  10. if (person==nil) {
  11. person=[[self alloc]init];
  12. }
  13. return person;
  14. }
  15. @end

(3)然后就能够使用了。比方在main.m中

  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3.  
  4. int main(int argc, const char * argv[]) {
  5.  
  6. @autoreleasepool {
  7. Person *p1=[Person defaultPerson];
  8. Person *p2=[Person defaultPerson];
  9. //打印的两个地址是同样的,这就是单例模式的应用
  10. NSLog(@"%@,%@",p1,p2);
  11. }
  12. return 0;
  13. }

除了单例设计模式之外。还有几种设计模式,总结:

——组合模式(聚合模式)。就是一个对象里面包括了另外一个对象。

——单例模式:如上。

——策略模式:用在封装变化点。比方我们定义一个有两个数+1个运算符号的方法,运算符号能够是+、-、*、/。所以这个封装变化点就在运算符号这边。我们能够用一个block方法来实现,这就是一种策略模式。

——向上抽象:就是protocol协议设计模式

——享元设计模式:就是NSString创建一个abc后,再创建一个abc时它会到池子中找到假设有就会直接取出来原本的abc,这相当于NSString原则游泳池。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式的更多相关文章

  1. 一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小

    计算文件夹下所有文件的大小 // 查看错误信息 __autoreleasing NSError *error; // 文件管理对象 NSFileManager *manager = [NSFileMa ...

  2. Node.js自定义对象事件监听与发射

    一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者 ...

  3. OC NSFileManager(文件路径操作)

    OC NSFileManager(文件路径操作) 初始化 NSFileManager * fm = [NSFileManager defaultManager]; 获取当前目录 [fm current ...

  4. iOS - OC NSFileManager 文件管理

    前言 @interface NSFileManager : NSObject @interface NSFileHandle : NSObject <NSSecureCoding> NSF ...

  5. OC语言--NSFileManager&amp; NSFileHandle

    1.关于文件的介绍 ->什么是文件: 文件概念, 广义文件. 狭义文件(磁盘文件). 文件常见的使用操作(可用命令行演示文件操作的使用场景). ->什么是路径: 简单来说就是,在系统中,要 ...

  6. OC中NSFileManager

    NSFileManager介绍 NSFileManager是用来管理文件系统的 它可以用来进行常见的文件\文件夹操作(拷贝.剪切.创建等) NSFileManager使用了单例模式singleton ...

  7. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  8. iOS开发 - OC - 实现本地数据存储的几种方式一

    iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...

  9. IOS学习之路--OC的基础知识

    1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...

随机推荐

  1. hdu 4740【模拟+深搜】.cpp

    题意: 给出老虎的起始点.方向和驴的起始点.方向.. 规定老虎和驴都不会走自己走过的方格,并且当没路走的时候,驴会右转,老虎会左转.. 当转了一次还没路走就会停下来.. 问他们有没有可能在某一格相遇. ...

  2. 在Laravel中一步一步创建Packages

    首先要看一下Laravel官方文档,这是最新4.2的文档,假设想看中文的话点击此处,基本一样.这个github上的库setup-laravel4-package,也是一步一步介绍怎样创建一个包.并关联 ...

  3. Drools学习笔记-01-在eclipse indgo集成Drools5.5

    1.1.条件 Drools它是一个基于Java开源规则引擎.因此,使用Drools以及前需要安装在开发机器JDK周边环境,Drools5.5需要JDK版本号的1.5或者更多. 1.2.开发环境搭建 大 ...

  4. MongoDB--Getting Started with Java Driver

    原文链接 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/  介绍 本文的目的是让你对怎样使用M ...

  5. jsoup方法string转document

    //Document doc2 = Jsoup.parseBodyFragment(element.text());                    //String FieldName=doc ...

  6. A Game of Thrones(4) - Eddard

    The visitors poured(倾泻:流出) through the castle gates in a river of gold and silver and polished steel ...

  7. wamp5中的apache不能启动,80端口被占用

    在wamp中apache中的httpd.conf文件中 端口文件设置为8080 #Listen 12.34.56.78:8080Listen 8080

  8. PHP Html 弹窗,本页面弹窗子页面

    echo '<script type=text/javascript>window.open("","name1","width=100, ...

  9. WPF实现无窗体鼠标跟随

    原文:WPF实现无窗体鼠标跟随 上次的弹力模拟动画实现后,我觉得可以把这个弄得更好玩一些,我们可以让小球实时跟随着鼠标,并且还可以让窗口完全消失,让小球在桌面上飞来飞去. 这只需要一些简单的修改就可以 ...

  10. PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

    环境 Oracle 11.2.0 + SQL Plus 问题 根据以下要求编写函数:将scott.emp表中工资低于平均工资的职工工资加上200,并返回修改了工资的总人数.PL/SQL中有更新的操作, ...